ifBlock function
Implementation
Parser ifBlock() => seq5(
ref0(ifTag),
ref0(ifBranchContent),
ref0(elseIfBlock).star(),
ref0(elseBlock).optional(),
ref0(endIfTag),
).map((values) {
final ifTag = values.$1 as Tag;
final ifBody = (values.$2 as List).cast<ASTNode>();
final elsifBlocks = (values.$3).cast<Tag>();
final elseBlock = values.$4 as Tag?;
final List<ASTNode> allBodyNodes = [...ifBody];
for (var block in elsifBlocks) {
allBodyNodes.add(block);
}
if (elseBlock != null) {
allBodyNodes.add(elseBlock);
}
return ifTag.copyWith(body: allBodyNodes);
}).labeled('ifBlock');