applyRule method

  1. @override
Delta? applyRule(
  1. Document document,
  2. int index, {
  3. int? len,
  4. Object? data,
  5. Attribute? attribute,
})
override

Applies heuristic rule to an operation on a document and returns resulting Delta.

Implementation

@override
Delta? applyRule(
  Document document,
  int index, {
  int? len,
  Object? data,
  Attribute? attribute,
}) {
  if (data is! String || data != '\n') {
    return null;
  }

  final itr = DeltaIterator(document.toDelta())..skip(index);
  final cur = itr.next();
  if (cur.data is! String || !(cur.data as String).startsWith('\n')) {
    return null;
  }

  Map<String, dynamic>? resetStyle;
  if (cur.attributes != null &&
      cur.attributes!.containsKey(Attribute.header.key)) {
    resetStyle = Attribute.header.toJson();
  }
  return Delta()
    ..retain(index + (len ?? 0))
    ..insert('\n', cur.attributes)
    ..retain(1, resetStyle)
    ..trim();
}