lib/compiler/parser.js
function expressionPaths(basePath, expression) {
  const expr = Object.assign({}, expression);
  if (expr.tokenType === 'SimpleExpression') {
    if (expr.path === '@value') {
      expr.path = basePath;
    } else {
      expr.path = paths.resolve(basePath, expr.path);
    }
  } else if (expr.tokenType === 'HelperExpression') {
    expr.args = expr.args.map((arg) => {
      if (arg.tokenType === 'StringLiteral') {
        return arg;
      }

      return expressionPaths(basePath, arg);
    });
  }

  return expr;
}
function expressionPaths(basePath, expression) {
  const expr = Object.assign({}, expression);
  if (expr.tokenType === 'SimpleExpression') {
    if (expr.path === '@value') {
      expr.path = basePath;
    } else {
      expr.path = paths.resolve(basePath, expr.path);
    }
  } else if (expr.tokenType === 'HelperExpression') {
    expr.args = expr.args.map((arg) => {
      if (arg.tokenType === 'StringLiteral') {
        return arg;
      }

      return expressionPaths(basePath, arg);
    });
  }

  return expr;
}
function expressionPaths ( basePath , expression ) { const expr = Object . assign ( { } , expression ) ; if ( expr . tokenType === 'SimpleExpression' ) { if ( expr . path === '@value' ) { expr . path = basePath ; } else { expr . path = paths . resolve ( basePath , expr . path ) ; } } else if ( expr . tokenType === 'HelperExpression' ) { expr . args = expr . args . map ( ( arg ) => { if ( arg . tokenType === 'StringLiteral' ) { return arg ; } return expressionPaths ( basePath , arg ) ; } ) ; } return expr ; }
Resolve all expression paths relative to the loop
@param {string} basePath
@param {object} expression
Resolve all expression paths relative to the loop