someTag function
Implementation
Parser<Tag> someTag(String name,
{Parser<dynamic>? start,
Parser<dynamic>? end,
Parser<dynamic>? content,
Parser<dynamic>? filters,
bool hasContent = true}) {
var parser = ((start ?? tagStart()) & string(name).trim());
if (hasContent) {
parser = parser &
(content ?? ref0(tagContent).optional()).trim() &
(filters ?? ref0(filter).star()).trim();
}
parser = parser & (end ?? tagEnd());
return parser.map((values) {
if (!hasContent) {
return Tag(name, []);
}
final tagContent =
values[2] is List<ASTNode> ? values[2] as List<ASTNode> : [];
final tagFilters =
values[3] is List ? (values[3] as List).cast<Filter>() : <Filter>[];
return Tag(name, tagContent.cast(), filters: tagFilters);
}).labeled('someTag');
}