update method

List<String> update(
  1. String source, {
  2. MarkdownBlockRegistry? blockRegistry,
  3. MarkdownHtml? html,
})

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;
}