private TemplateExpression CreateExpression(string value, ILineInfo lineAwareJsonObject)
        {
            if (!string.IsNullOrWhiteSpace(value))
            {
                if (lineAwareJsonObject == null)
                {
                    return(new TemplateExpression(value, TemplateExpressionLanguage.JsonPath));
                }

                var templateExpression = new TemplateExpression(value, TemplateExpressionLanguage.JsonPath)
                {
                    LineNumber   = lineAwareJsonObject.LineNumber,
                    LinePosition = lineAwareJsonObject.LinePosition,
                };

                templateExpression.LineInfoForProperties[nameof(TemplateExpression.Value)] = new LineInfo()
                {
                    LineNumber   = lineAwareJsonObject.LineNumber,
                    LinePosition = lineAwareJsonObject.LinePosition,
                };

                return(templateExpression);
            }

            return(null);
        }
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            if (reader.ValueType == typeof(string))
            {
                var templateExpression = new TemplateExpression()
                {
                    Value = (string)reader.Value,
                };

                if (reader is IJsonLineInfo lineInfoReader && lineInfoReader != null && lineInfoReader.HasLineInfo())
                {
                    templateExpression.LineInfoForProperties = new Dictionary <string, LineInfo>();
                    templateExpression.LineNumber            = lineInfoReader.LineNumber;
                    templateExpression.LinePosition          = lineInfoReader.LinePosition;
                    templateExpression.LineInfoForProperties[nameof(templateExpression.Value)] =
                        new LineInfo()
                    {
                        LineNumber   = lineInfoReader.LineNumber,
                        LinePosition = lineInfoReader.LinePosition,
                    };
                }

                return(templateExpression);
            }
            else
            {
                return(JToken.Load(reader).ToObject <TemplateExpression>(JsonSerializer.Create(jsonSerializerSettings)));
            }
        }
Exemplo n.º 3
0
        public IExpressionEvaluator Create(TemplateExpression expression)
        {
            EnsureArg.IsNotEmptyOrWhiteSpace(expression?.Value, nameof(expression.Value));
            EnsureArg.IsNotNull(expression?.Language, nameof(expression.Language));

            return(expression.Language switch
            {
                TemplateExpressionLanguage.JsonPath => new JsonPathExpressionEvaluator(expression.Value),
                TemplateExpressionLanguage.JmesPath => new JmesPathExpressionEvaluator(_jmesPath, expression.Value),
                _ => throw new TemplateExpressionException($"Unsupported Expression Language: {expression?.Language}")
            });
        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)
            });
        public IExpressionEvaluator Create(TemplateExpression expression)
        {
            EnsureArg.IsNotEmptyOrWhiteSpace(expression?.Value, nameof(expression.Value));

            var expressionLanguage = expression.Language ?? TemplateExpressionLanguage.JsonPath;

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

            return(new JsonPathExpressionEvaluator(expression.Value));
        }
Exemplo n.º 6
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));
        }
Exemplo n.º 7
0
 private void AddExpression(
     IDictionary <string, IExpressionEvaluator> cache,
     TemplateExpression expression,
     string expressionName,
     bool isRequired = false)
 {
     if (expression != null)
     {
         cache[expression.GetId()] = _expressionEvaluatorFactory.Create(expression);
         _logger.LogTrace($"Using {expression.Value} for expression [{expressionName}]");
     }
     else if (isRequired)
     {
         throw new TemplateExpressionException($"Unable to create the template; the expression for [{expressionName}] is missing");
     }
 }
Exemplo n.º 8
0
            public IExpressionEvaluator Create(TemplateExpression expression)
            {
                EnsureArg.IsNotNull(expression, nameof(expression));

                return(_expressionCache[expression.GetId()]);
            }