forBlock function

Parser forBlock()

Implementation

Parser forBlock() =>
    seq4(
          ref0(forTag),
          ref0(element).starLazy(ref0(elseTag).or(ref0(endForTag))),
          ref0(elseBlockForFor).optional(),
          ref0(endForTag),
        )
        .map((values) {
          final forTag = values.$1 as Tag;
          final forBody = (values.$2).cast<ASTNode>();
          final elseBlockForFor = values.$3 as Tag?;

          final List<ASTNode> allBodyNodes = [...forBody];
          if (elseBlockForFor != null) {
            allBodyNodes.add(elseBlockForFor);
          }

          return forTag.copyWith(body: allBodyNodes);
        })
        .labeled('forBlock');