stringLiteral method
Implementation
Parser<ExpressionNode> stringLiteral() =>
ref0(singleStringLiteral).plus().map((list) {
if (list.length == 1) return list.first;
final allSimple = list.every((e) => e is StringLiteralNode);
if (allSimple) {
final buffer = StringBuffer();
for (final node in list.cast<StringLiteralNode>()) {
buffer.write(node.value);
}
return StringLiteralNode(buffer.toString());
}
final parts = <DartNode>[];
for (final node in list) {
if (node is StringLiteralNode) {
parts.add(node);
} else if (node is InterpolatedStringNode) {
parts.addAll(node.parts);
} else {
parts.add(node);
}
}
return InterpolatedStringNode(parts);
});