Refactor code of ResolveLineFormatRule

pull/541/head
X Code 3 years ago
parent 5c12b11777
commit b8f016e831
  1. 15
      lib/src/models/rules/format.dart

@ -30,13 +30,14 @@ class ResolveLineFormatRule extends FormatRule {
// Apply line styles to all newline characters within range of this
// retain operation.
var delta = Delta()..retain(index);
var result = Delta()..retain(index);
final itr = DeltaIterator(document)..skip(index);
Operation op;
for (var cur = 0; cur < len! && itr.hasNext; cur += op.length!) {
op = itr.next(len - cur);
if (op.data is! String || !(op.data as String).contains('\n')) {
delta.retain(op.length!);
final opText = op.data is String ? op.data as String : '';
if (!opText.contains('\n')) {
result.retain(op.length!);
continue;
}
final text = op.data as String;
@ -54,7 +55,7 @@ class ResolveLineFormatRule extends FormatRule {
offset = lineBreak + 1;
}
tmp.retain(text.length - offset);
delta = delta.concat(tmp);
result = result.concat(tmp);
}
while (itr.hasNext) {
@ -62,17 +63,17 @@ class ResolveLineFormatRule extends FormatRule {
final text = op.data is String ? (op.data as String?)! : '';
final lineBreak = text.indexOf('\n');
if (lineBreak < 0) {
delta.retain(op.length!);
result.retain(op.length!);
continue;
}
final removedBlocks = _getRemovedBlocks(attribute, op);
delta
result
..retain(lineBreak)
..retain(1, attribute.toJson()..addEntries(removedBlocks));
break;
}
return delta;
return result;
}
Iterable<MapEntry<String, dynamic>> _getRemovedBlocks(

Loading…
Cancel
Save