Ejemplo n.º 1
0
        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();
             */
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 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());
 }
Ejemplo n.º 4
0
 /// inheritedDoc
 public string ResolveVariable(string value, JsonLogic2HqlConverterContext context)
 {
     return(context.VariablesResolvers.ContainsKey(value)
         ? context.VariablesResolvers[value]
         : value);
 }