internal static string Extract(string q, ValueToken val, bool stripQuotes = false) { switch (val.Type) { case ValueTokenType.False: return("false"); case ValueTokenType.Null: return("null"); case ValueTokenType.True: return("true"); } if (stripQuotes && val.Type == ValueTokenType.String) { return(Extract(q, val.TokenStart + 1, val.TokenLength - 2, val.EscapeChars)); } return(Extract(q, val.TokenStart, val.TokenLength, val.EscapeChars)); }
private static void WriteSimpleOperatorJavaScript(string query, TextWriter writer, string fieldName, string alias, OperatorType type, ValueToken value) { if (alias != null) { writer.Write(alias); writer.Write("."); } writer.Write(fieldName); switch (type) { case OperatorType.Equal: writer.Write(" == "); break; case OperatorType.NotEqual: writer.Write(" != "); break; case OperatorType.LessThan: writer.Write(" < "); break; case OperatorType.GreaterThan: writer.Write(" > "); break; case OperatorType.LessThanEqual: writer.Write(" <= "); break; case OperatorType.GreaterThanEqual: writer.Write(" >= "); break; default: ThrowInvalidType(type); break; } writer.Write(Extract(query, value)); }
private bool Value(out ValueToken val) { var numberToken = Scanner.TryNumber(); if (numberToken != null) { val = new ValueToken { TokenStart = Scanner.TokenStart, TokenLength = Scanner.TokenLength, Type = numberToken.Value == NumberToken.Long ? ValueTokenType.Long : ValueTokenType.Double }; return(true); } if (Scanner.String()) { val = new ValueToken { TokenStart = Scanner.TokenStart, TokenLength = Scanner.TokenLength, Type = ValueTokenType.String, EscapeChars = Scanner.EscapeChars }; return(true); } if (Scanner.TryScan(StaticValues, out var match)) { val = new ValueToken { TokenStart = Scanner.TokenStart, TokenLength = Scanner.TokenLength }; switch (match) { case "true": val.Type = ValueTokenType.True; break; case "false": val.Type = ValueTokenType.False; break; case "null": val.Type = ValueTokenType.Null; break; } return(true); } if (Parameter(out int tokenStart, out int tokenLength)) { val = new ValueToken { TokenStart = tokenStart, TokenLength = tokenLength, Type = ValueTokenType.Parameter }; return(true); } val = null; return(false); }