public static SubExpression ( |
||
expression | ||
리턴 | SubExpressionExpression |
Expression Visit(Expression expression) { if (expression is HelperExpression helperExpression) { var originalArguments = helperExpression.Arguments.ToArray(); var arguments = ConvertTokens(originalArguments) .Cast <Expression>() .ToArray(); if (!arguments.SequenceEqual(originalArguments)) { return(HandlebarsExpression.Helper( helperExpression.HelperName, arguments, helperExpression.IsRaw)); } } if (expression is SubExpressionExpression subExpression) { Expression childExpression = Visit(subExpression.Expression); if (childExpression != subExpression.Expression) { return(HandlebarsExpression.SubExpression(childExpression)); } } return(expression); }
protected virtual Expression VisitSubExpression(SubExpressionExpression subex) { Expression expression = Visit(subex.Expression); if (expression != subex.Expression) { return(HandlebarsExpression.SubExpression(expression)); } return(subex); }
private static SubExpressionExpression BuildSubExpression(IEnumerator <object> enumerator) { object item = GetNext(enumerator); var path = item as PathExpression; if (path == null) { throw new HandlebarsCompilerException("Found a sub-expression that does not contain a path expression"); } var helperArguments = AccumulateSubExpression(enumerator); return(HandlebarsExpression.SubExpression( HandlebarsExpression.Helper( path.Path, helperArguments))); }
protected override Expression VisitSubExpression(SubExpressionExpression subex) { return(HandlebarsExpression.SubExpression( Visit(subex.Expression))); }