protected override Expression VisitHelperExpression(HelperExpression hex) { var engine = CompilationContext.Engine; var configuration = engine.Configuration; if (configuration.Helpers.TryGetValue(hex.HelperName, out HandlebarsHelperV2 helper)) { var arguments = new Expression[] { Expression.Constant(engine, typeof(IHandlebarsEngine)), Expression.Property( CompilationContext.BindingContext, #if netstandard typeof(BindingContext).GetRuntimeProperty("TextWriter")), #else typeof(BindingContext).GetProperty("TextWriter")), #endif Expression.Property( CompilationContext.BindingContext, #if netstandard typeof(BindingContext).GetRuntimeProperty("Value")), #else typeof(BindingContext).GetProperty("Value")), #endif Expression.NewArrayInit(typeof(object), hex.Arguments.Select(Visit)) }; if (helper.Target != null) { return(Expression.Call( Expression.Constant(helper.Target), #if netstandard helper.GetMethodInfo(), #else helper.Method, #endif arguments)); } else { return(Expression.Call( #if netstandard helper.GetMethodInfo(), #else helper.Method, #endif arguments)); } } return(Expression.Call( Expression.Constant(this), #if netstandard new Action <BindingContext, string, IEnumerable <object> >(LateBindHelperExpression).GetMethodInfo(), #else new Action <BindingContext, string, IEnumerable <object> >(LateBindHelperExpression).Method, #endif CompilationContext.BindingContext, Expression.Constant(hex.HelperName), Expression.NewArrayInit(typeof(object), hex.Arguments))); }
protected override System.Linq.Expressions.Expression VisitHelperExpression(HelperExpression hex) { if (CompilationContext.Configuration.Helpers.ContainsKey(hex.HelperName)) { var helper = CompilationContext.Configuration.Helpers[hex.HelperName]; var arguments = new System.Linq.Expressions.Expression[] { System.Linq.Expressions.Expression.Property( CompilationContext.BindingContext, #if netstandard typeof(BindingContext).GetRuntimeProperty("TextWriter")), #else typeof(BindingContext).GetProperty("TextWriter")), #endif System.Linq.Expressions.Expression.Property( CompilationContext.BindingContext, #if netstandard typeof(BindingContext).GetRuntimeProperty("Value")), #else typeof(BindingContext).GetProperty("Value")), #endif System.Linq.Expressions.Expression.NewArrayInit(typeof(object), hex.Arguments.Select(a => Visit(a))) }; if (helper.Target != null) { return(System.Linq.Expressions.Expression.Call( System.Linq.Expressions.Expression.Constant(helper.Target), #if netstandard helper.GetMethodInfo(), #else helper.Method, #endif arguments)); } else { return(System.Linq.Expressions.Expression.Call( #if netstandard helper.GetMethodInfo(), #else helper.Method, #endif arguments)); } } else { return(System.Linq.Expressions.Expression.Call( System.Linq.Expressions.Expression.Constant(this), #if netstandard new Action <BindingContext, string, IEnumerable <object> >(LateBindHelperExpression).GetMethodInfo(), #else new Action <BindingContext, string, IEnumerable <object> >(LateBindHelperExpression).Method, #endif CompilationContext.BindingContext, System.Linq.Expressions.Expression.Constant(hex.HelperName), System.Linq.Expressions.Expression.NewArrayInit(typeof(object), hex.Arguments))); } }
private static bool IsBlockHelperOrInversion(HelperExpression helperExpression) { if (helperExpression == null) { return(false); } return(helperExpression.HelperName.StartsWith("#") || (helperExpression.HelperName == "else")); }
protected virtual Expression VisitHelperExpression(HelperExpression hex) { return(hex); }
protected override System.Linq.Expressions.Expression VisitHelperExpression(HelperExpression hex) { return(HandlebarsExpression.Helper( hex.HelperName, hex.Arguments.Select(Visit))); }
public BlockHelperAccumulatorContext(Expression startingNode) { startingNode = UnwrapStatement(startingNode); _startingNode = (HelperExpression)startingNode; }
public IteratorBlockAccumulatorContext(Expression startingNode) { _startingNode = (HelperExpression)UnwrapStatement(startingNode); }
protected virtual System.Linq.Expressions.Expression VisitHelperExpression(HelperExpression hex) { return(hex); }
public IteratorBlockAccumulatorContext(Expression startingNode) : base(startingNode) { startingNode = UnwrapStatement(startingNode); _startingNode = (HelperExpression)startingNode; }