variable function

Parser variable([
  1. LiquidConfig? config
])

Variable parser - parses {{ expression | filter }} syntax.

If config is provided, uses custom delimiters from the config.

Implementation

Parser variable([LiquidConfig? config]) =>
    (varStart(config) &
            ref0(expression).trim() &
            filter().star().trim() &
            varEnd(config))
        .map((values) {
          ASTNode expr = values[1];
          String name = '';
          if (expr is Identifier) {
            name = expr.name;
          } else if (expr is MemberAccess) {
            name = (expr.object as Identifier).name;
          }

          if ((values[2] as List).isNotEmpty) {
            return FilteredExpression(
              Variable(name, expr),
              (values[2] as List).cast<Filter>(),
            );
          }

          return Variable(name, expr);
        })
        .labeled('variable');