denormalize method
Denormalizes a single operation map by splitting newlines into separate operations.
op
is a Map representing a single operation within the Delta.
Implementation
List<Map<String, dynamic>> denormalize(Map<String, dynamic> op) {
const newLine = '\n';
final insertValue = op['insert'];
if (insertValue is Map || insertValue == newLine) {
return <Map<String, dynamic>>[op];
}
final List<String> newlinedArray =
tokenizeWithNewLines(insertValue.toString());
if (newlinedArray.length == 1) {
return <Map<String, dynamic>>[op];
}
// Copy op to retain its attributes, but replace the insert value with a newline.
final Map<String, dynamic> nlObj = <String, dynamic>{
...op,
...<String, String>{'insert': newLine}
};
return newlinedArray.map((String line) {
if (line == newLine) {
return nlObj;
}
return <String, dynamic>{
...op,
...<String, String>{'insert': line},
};
}).toList();
}