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))); } }
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)); }
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)); }
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"); } }
public IExpressionEvaluator Create(TemplateExpression expression) { EnsureArg.IsNotNull(expression, nameof(expression)); return(_expressionCache[expression.GetId()]); }