Exemplo n.º 1
0
        public IExpressionEvaluator Create(TemplateExpression expression)
        {
            EnsureArg.IsNotNullOrWhiteSpace(expression?.Value, nameof(expression.Value));

            var expressionLanguage = expression.Language ?? TemplateExpressionLanguage.JsonPath;
            var languageLineInfo   = expression.GetLineInfoForProperty(nameof(TemplateExpression.Language)) ?? expression;
            var valueLineInfo      = expression.GetLineInfoForProperty(nameof(TemplateExpression.Value)) ?? expression;

            if (expressionLanguage != TemplateExpressionLanguage.JsonPath)
            {
                throw new TemplateExpressionException($"Unsupported Expression Language {expressionLanguage}. Only JsonPath is supported.", languageLineInfo);
            }

            return(new JsonPathExpressionEvaluator(expression.Value, valueLineInfo));
        }
        public IExpressionEvaluator Create(TemplateExpression expression)
        {
            EnsureArg.IsNotNullOrWhiteSpace(expression?.Value, nameof(expression.Value));
            EnsureArg.IsNotNull(expression?.Language, nameof(expression.Language));

            var lineInfo = expression.GetLineInfoForProperty("value") ?? expression;

            return(expression.Language switch
            {
                TemplateExpressionLanguage.JsonPath => new JsonPathExpressionEvaluator(expression.Value, lineInfo),
                TemplateExpressionLanguage.JmesPath => new JmesPathExpressionEvaluator(_jmesPath, expression.Value, lineInfo),
                _ => throw new TemplateExpressionException($"Unsupported Expression Language: {expression?.Language}", lineInfo)
            });