update method
Implementation
List<String> update(
String source, {
MarkdownBlockRegistry? blockRegistry,
MarkdownHtml? html,
}) {
final sameRules =
identical(_registry, blockRegistry) && identical(_html, html);
if (source == _source && sameRules) {
return _segments;
}
var from = 0;
var prefix = const <String>[];
if (sameRules &&
_segments.isNotEmpty &&
!source.contains('\r') &&
source.startsWith(_source)) {
from = _source.lastIndexOf(_segments.last);
if (from >= 0) {
prefix = _segments.sublist(0, _segments.length - 1);
} else {
from = 0;
}
}
_segments = List.unmodifiable([
...prefix,
...splitStreamSegments(
source.substring(from),
blockRegistry: blockRegistry,
html: html,
),
]);
_source = source;
_registry = blockRegistry;
_html = html;
return _segments;
}