MessageBlock constructor
MessageBlock(
- String block
Implementation
factory MessageBlock(String block) {
var parts = <String>[];
var appendToPrevBlock = false;
var cursor = 0;
for (var m in _regexpBlockSplitter.allMatches(block)) {
var prev = m.start > cursor ? block.substring(cursor, m.start) : '';
var escapedChar = m.group(1);
var escaped = false;
if (escapedChar != null && escapedChar.isNotEmpty) {
prev += '|';
escaped = true;
}
if (prev.isNotEmpty) {
if (appendToPrevBlock) {
parts[parts.length - 1] += prev;
} else {
parts.add(prev);
}
}
appendToPrevBlock = escaped;
cursor = m.end;
}
if (block.length > cursor) {
var tail = block.substring(cursor);
if (appendToPrevBlock) {
parts[parts.length - 1] += tail;
} else {
parts.add(tail);
}
}
var branches = <MessageBlockBranch>[];
for (var part in parts) {
branches.add(MessageBlockBranch(part));
}
return MessageBlock._(branches);
}