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');
}