public static Value IndexOf(List <EvalNode> parameters, EvalContext context) { var str = parameters[0].Eval(context).AsString; var substr = parameters[1].Eval(context).AsString; return(str.IndexOf(substr)); }
public static Value TableReference(List <EvalNode> parameters, EvalContext context) { var name = (parameters[0] is CellReferenceNode crn) ? crn.Name : parameters[0].Eval(context).AsString; return(context.TabularLookup( name, parameters[1].Eval(context).AsInt, parameters[2].Eval(context).AsInt)); }
public static Value Substring(List <EvalNode> parameters, EvalContext context) { var str = parameters[0].Eval(context).AsString; int start = (parameters.Count > 1) ? parameters[1].Eval(context).AsInt : 0; int length = (parameters.Count > 2) ? parameters[2].Eval(context).AsInt : (str.Length - start); return(str.Substring(start, length)); }
public static Value If(List <EvalNode> parameters, EvalContext context) { if (parameters[0].Eval(context).AsBool) { return(parameters[1].Eval(context)); } else { return(parameters[2].Eval(context)); } }
public override Value Eval(EvalContext context) { return(context.Lookup(Name).Eval(context)); }
public abstract Value Eval(EvalContext context);
public override Value Eval(EvalContext context) { return(value); }
public override Value Eval(EvalContext context) { return(op.Function(children, context)); }
public Value Eval(EvalContext context) => evalNode.Eval(context);
public static Value Concat(List <EvalNode> parameters, EvalContext context) { var strings = parameters.Select(node => node.Eval(context).AsString); return(string.Concat(strings)); }
public static Value Average(List <EvalNode> parameters, EvalContext context) { var values = parameters.Select(c => c.Eval(context)); return(values.Aggregate(0f, (a, b) => a + b) / values.Count()); }
public static Value Min(List <EvalNode> parameters, EvalContext context) { var values = parameters.Select(c => c.Eval(context)); return(values.Aggregate(float.MaxValue, (a, b) => System.Math.Min(a, b))); }