parseLines static method
Parses the component from the specified text lines
.
Compare parse for details.
Implementation
static VComponent parseLines(
List<String> lines, {
Property? Function(String name, String definition)? customParser,
}) {
final root = _createComponent(lines.first);
var current = root;
for (var i = 1; i < lines.length; i++) {
final line = lines[i];
try {
if (line.startsWith('BEGIN:')) {
final child = _createComponent(line, parent: current);
current.children.add(child);
current = child;
} else if (line.startsWith('END:')) {
final expected = 'END:${current.name}';
if (line != expected) {
throw FormatException('Received [$line] but expected [$expected]');
}
current.checkValidity();
final parent = current.parent;
if (parent != null) {
current = parent;
}
} else {
if (line.trim().isEmpty) {
continue;
}
final property =
Property.parseProperty(line, customParser: customParser);
current.properties.add(property);
}
} on FormatException catch (e) {
print('Error parsing line $i: "$line"');
rethrow;
}
}
return root;
}