protected virtual void Function(TemplateContext context, string ns, string name, JObject function) { if (!TryObjectProperty(function, PROPERTY_OUTPUT, out JObject output)) { return; } TryArrayProperty(function, PROPERTY_PARAMETERS, out JArray parameters); //var outputFn = context.Expression.Build(outputValue); ExpressionFn fn = (ctx, args) => { var fnContext = new UserDefinedFunctionContext(ctx); fnContext.SetParameters(parameters, args); return(UserDefinedFunction(fnContext, output[PROPERTY_VALUE])); }; context.Function(ns, name, fn); }
public FunctionDescriptor(string name, ExpressionFn fn, bool delayBinding = false) { Name = name; Fn = fn; DelayBinding = delayBinding; }
public FunctionDescriptor(string name, ExpressionFn fn) { Name = name; Fn = fn; }
internal void Function(string ns, string name, ExpressionFn fn) { var descriptor = new FunctionDescriptor(string.Concat(ns, ".", name), fn); _ExpressionFactory.With(descriptor); }