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) });