private string AdjustType(object value, JsonLogic2HqlConverterContext context) { if (value == null) { return("null"); } // todo: add parameters support! replace value with parameter reference and add parameter to the context // convert boolean to 1/0 if (value is bool boolValue) { return(boolValue ? "1" : "0"); } var paramName = context.AddParameter(FixValue(value)); return($":{paramName}"); /* * if (value is string stringValue) * return $"'{stringValue}'"; * //if (value is string stringValue) * // return stringValue; * * return value.IsNumeric() * ? System.Convert.ToDouble(value).ToString() * : value.ToString(); */ }
public string Convert(JToken rule, JsonLogic2HqlConverterContext context) { if (rule is JValue value) { return (AdjustType(value.Value, context)); } if (rule is JArray array) { return(array.Select(r => Convert(r, context)).ToArray().Delimited(",")); // todo: check and replace with a delimiter constant + add parameters support if needed } if (rule is JObject ruleObj) { var operationProps = GetOperation(ruleObj); var jsOperator = operations.GetOperator(operationProps.Operation); return(jsOperator(this, operationProps.Arguments, context)); } return(null); }
private List <string> ConvertArguments(IJsonLogic2HqlConverter converter, JToken[] args, JsonLogic2HqlConverterContext context, bool wrap = false) { return(args.Select(a => { var arg = converter.Convert(a, context); return wrap ? $"({arg})" : arg; }) .ToList()); }
/// inheritedDoc public string ResolveVariable(string value, JsonLogic2HqlConverterContext context) { return(context.VariablesResolvers.ContainsKey(value) ? context.VariablesResolvers[value] : value); }