コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
 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));
     }
 }
コード例 #5
0
 public override Value Eval(EvalContext context)
 {
     return(context.Lookup(Name).Eval(context));
 }
コード例 #6
0
 public abstract Value Eval(EvalContext context);
コード例 #7
0
 public override Value Eval(EvalContext context)
 {
     return(value);
 }
コード例 #8
0
 public override Value Eval(EvalContext context)
 {
     return(op.Function(children, context));
 }
コード例 #9
0
ファイル: Formula.cs プロジェクト: seuribe/Logik
 public Value Eval(EvalContext context) => evalNode.Eval(context);
コード例 #10
0
        public static Value Concat(List <EvalNode> parameters, EvalContext context)
        {
            var strings = parameters.Select(node => node.Eval(context).AsString);

            return(string.Concat(strings));
        }
コード例 #11
0
        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());
        }
コード例 #12
0
        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)));
        }