Sha256: 7e94db2f3facb92a360bada077b966a9b1b3185f582813a86d8f5a8c0c70fae3
Contents?: true
Size: 1.84 KB
Versions: 9
Compression:
Stored size: 1.84 KB
Contents
grammar SQLPrimitives include SQLTokens rule primitive OPEN_PARENS primitive CLOSE_PARENS { def eval simple_primitive.eval end } / simple_primitive end rule simple_primitive datetime / date / boolean / quoted_string / backtick_string / number / string end rule optional_spaces SPACE* end rule boolean TRUE / FALSE end rule quoted_string single_quoted_string / double_quoted_string end rule single_quoted_string SINGLE_QUOTE (NON_QUOTE_CHARS / DOUBLE_QUOTE)* SINGLE_QUOTE { def eval text_value[1..text_value.length-2] end } end rule double_quoted_string DOUBLE_QUOTE (NON_QUOTE_CHARS / SINGLE_QUOTE)* DOUBLE_QUOTE { def eval text_value[1..text_value.length-2] end } end rule backtick_string BACKTICK string BACKTICK { def eval string.eval end } end rule string STRING_CHARS+ { def eval text_value end } end rule number float / integer end rule integer MINUS_OR_DIGIT DIGIT* { def eval text_value.to_i end } end rule float integer "." integer { def eval text_value.to_f end } end rule date one:four_digits DASH two:two_digits DASH three:two_digits { def eval elements = [one.eval, two.eval, three.eval] Date.new(*elements) end } end rule four_digits two_digits two_digits { def eval; text_value.to_i; end } end rule two_digits DIGIT DIGIT { def eval; text_value.to_i; end } end rule datetime quote? date SPACE time quote? { def eval Time.parse(text_value) end } end rule time two_digits ":" two_digits ":" two_digits end rule quote SINGLE_QUOTE / DOUBLE_QUOTE end end
Version data entries
9 entries across 9 versions & 1 rubygems