Beispiel #1
0
        // Generate a new lookup function based on one lookup function
        private EvaluatorLookup CustomizedEvaluatorLookup(EvaluatorLookup baseLookup)
        => (string name) =>
        {
            var standardFunction = baseLookup(name);

            if (standardFunction != null)
            {
                return(standardFunction);
            }

            if (name.StartsWith("lg."))
            {
                name = name.Substring(3);
            }

            var templateName = ParseTemplateName(name).pureTemplateName;

            if (this.TemplateMap.ContainsKey(templateName))
            {
                return(new ExpressionEvaluator(templateName, ExpressionFunctions.Apply(this.TemplateEvaluator(name)), ReturnType.Object, this.ValidTemplateReference));
            }

            const string template = "template";

            if (name.Equals(template))
            {
                return(new ExpressionEvaluator(template, ExpressionFunctions.Apply(this.TemplateFunction()), ReturnType.Object, this.ValidateTemplateFunction));
            }

            const string fromFile = "fromFile";

            if (name.Equals(fromFile))
            {
                return(new ExpressionEvaluator(fromFile, ExpressionFunctions.Apply(this.FromFile()), ReturnType.String, ExpressionFunctions.ValidateUnaryString));
            }

            const string activityAttachment = "ActivityAttachment";

            if (name.Equals(activityAttachment))
            {
                return(new ExpressionEvaluator(
                           activityAttachment,
                           ExpressionFunctions.Apply(this.ActivityAttachment()),
                           ReturnType.Object,
                           (expr) => ExpressionFunctions.ValidateOrder(expr, null, ReturnType.Object, ReturnType.String)));
            }

            const string isTemplate = "isTemplate";

            if (name.Equals(isTemplate))
            {
                return(new ExpressionEvaluator(isTemplate, ExpressionFunctions.Apply(this.IsTemplate()), ReturnType.Boolean, ExpressionFunctions.ValidateUnaryString));
            }

            return(null);
        };