sqliterate 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +21 -0
- data/README.md +0 -0
- data/lib/sqliterate.rb +18 -0
- data/lib/sqliterate/grammar/command.treetop +13 -0
- data/lib/sqliterate/grammar/comment.treetop +15 -0
- data/lib/sqliterate/grammar/expression.treetop +239 -0
- data/lib/sqliterate/grammar/identifier.treetop +45 -0
- data/lib/sqliterate/grammar/keywords.treetop +255 -0
- data/lib/sqliterate/grammar/literals.treetop +40 -0
- data/lib/sqliterate/grammar/operator.treetop +65 -0
- data/lib/sqliterate/grammar/query.treetop +25 -0
- data/lib/sqliterate/grammar/space.treetop +17 -0
- data/lib/sqliterate/grammar/string.treetop +47 -0
- data/lib/sqliterate/node/control.rb +3 -0
- data/lib/sqliterate/node/control/expression.rb +192 -0
- data/lib/sqliterate/node/control/query.rb +39 -0
- data/lib/sqliterate/node/evaluate.rb +5 -0
- data/lib/sqliterate/node/evaluate/expression.rb +124 -0
- data/lib/sqliterate/node/evaluate/literals.rb +46 -0
- data/lib/sqliterate/node/evaluate/operator.rb +51 -0
- data/lib/sqliterate/node/evaluate/string.rb +42 -0
- data/lib/sqliterate/node/identify.rb +3 -0
- data/lib/sqliterate/node/identify/identifier.rb +40 -0
- data/lib/sqliterate/node/identify/keywords.rb +9 -0
- data/lib/sqliterate/version.rb +3 -0
- metadata +140 -0
@@ -0,0 +1,124 @@
|
|
1
|
+
module SQLiterate
|
2
|
+
module Node
|
3
|
+
module GenExpression
|
4
|
+
def value
|
5
|
+
h.elements.map { |e| e.gen_operator.operator } +
|
6
|
+
[gen_value.value] +
|
7
|
+
r.elements.flat_map do |e|
|
8
|
+
e.o.elements.map { |p| p.gen_operator.operator } + [e.gen_value.value]
|
9
|
+
end +
|
10
|
+
t.elements.map { |e| e.gen_operator.operator }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module GenValue
|
15
|
+
module Literal
|
16
|
+
end
|
17
|
+
module Function
|
18
|
+
end
|
19
|
+
module Subscript
|
20
|
+
def value
|
21
|
+
[:s, field_selection.value] + r.elements.map do |e|
|
22
|
+
e.range_expression.value
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
module Field
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
module FunctionCall
|
31
|
+
def value
|
32
|
+
[function_name.name] + function_params.value
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
module TypeCast
|
37
|
+
def value
|
38
|
+
[type_name.name, scalar_expression.value]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
module VoidExpression
|
43
|
+
def value
|
44
|
+
[]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
module AggregateExpression
|
49
|
+
def value
|
50
|
+
[:a, expressions_list.value, order_by_clause.value]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
module OrderByClause
|
55
|
+
def value
|
56
|
+
respond_to?(:expressions_list) ? expressions_list.value : nil
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
module ExpressionsList
|
61
|
+
def value
|
62
|
+
[gen_expression.value] + r.elements.map do |e|
|
63
|
+
e.gen_expression.value
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
module NamedExpressionsList
|
69
|
+
def value
|
70
|
+
[named_expression.value] + r.elements.map do |e|
|
71
|
+
e.named_expression.value
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
module NamedExpression
|
77
|
+
def value
|
78
|
+
if respond_to?(:column_name)
|
79
|
+
[column_name.name, gen_expression.value]
|
80
|
+
else
|
81
|
+
gen_expression.value
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
module AllColumns
|
87
|
+
def value
|
88
|
+
[:all]
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
module RangeExpression
|
93
|
+
def value
|
94
|
+
[:r, b.value, e.value]
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
module FieldSelection
|
99
|
+
def value
|
100
|
+
[:f, row_value.value, field_identifier.name]
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
module RowValue
|
105
|
+
module Query
|
106
|
+
def value
|
107
|
+
query_expression.text_value
|
108
|
+
end
|
109
|
+
end
|
110
|
+
module Expression
|
111
|
+
def value
|
112
|
+
gen_expression.value
|
113
|
+
end
|
114
|
+
end
|
115
|
+
module Positional
|
116
|
+
end
|
117
|
+
module Identifier
|
118
|
+
def value
|
119
|
+
name
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module SQLiterate
|
2
|
+
module Node
|
3
|
+
module PositionalParam
|
4
|
+
def value
|
5
|
+
[:p, digits.value]
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
module NumericLiteral
|
10
|
+
def value
|
11
|
+
decimal_literal.value * (10 ** exponent_literal.value)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module DecimalLiteral
|
16
|
+
def value
|
17
|
+
text_value.to_f
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
module ExponentLiteral
|
22
|
+
def value
|
23
|
+
digits.value * ( s.text_value == '-' ? -1 : 1 )
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
module Digits
|
28
|
+
def value
|
29
|
+
text_value.to_i
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
module Boolean
|
34
|
+
module True
|
35
|
+
def value
|
36
|
+
true
|
37
|
+
end
|
38
|
+
end
|
39
|
+
module False
|
40
|
+
def value
|
41
|
+
false
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module SQLiterate
|
2
|
+
module Node
|
3
|
+
module KeywordOperator
|
4
|
+
def operator
|
5
|
+
text_value.to_sym
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
module OperatorChar
|
10
|
+
def char
|
11
|
+
c.text_value
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module SingleCharOperator
|
16
|
+
def operator
|
17
|
+
c.char.to_sym
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
module SignEndingOperator
|
22
|
+
def operator
|
23
|
+
( unless b.empty?
|
24
|
+
b.r.elements.map { |e| e.basic_op_char.char } + [b.basic_op_char.char]
|
25
|
+
else
|
26
|
+
[]
|
27
|
+
end + [special_op_char.char] + \
|
28
|
+
unless o.empty?
|
29
|
+
o.r.elements.map { |e| e.op_char.char } + [o.op_char.char]
|
30
|
+
else
|
31
|
+
[]
|
32
|
+
end + [sign_op_char.char]
|
33
|
+
).join.to_sym
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
module NonsignEndingOperator
|
38
|
+
def operator
|
39
|
+
( r.elements.map { |e| e.op_char.char } +
|
40
|
+
[op_char.char] + [nonsign_op_char.char]
|
41
|
+
).join.to_sym
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
module AmbiguousOperator
|
46
|
+
def operator
|
47
|
+
( r.elements.map { |e| e.op_char.char } + [op_char.char] ).join.to_sym
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module SQLiterate
|
2
|
+
module Node
|
3
|
+
module MultiString
|
4
|
+
def value
|
5
|
+
([single_string.value] + \
|
6
|
+
t.elements.map do |e|
|
7
|
+
e.single_string.value
|
8
|
+
end
|
9
|
+
).join
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module Character
|
14
|
+
module Quote
|
15
|
+
def value
|
16
|
+
"'"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
module Text
|
20
|
+
def value
|
21
|
+
text_value
|
22
|
+
end
|
23
|
+
end
|
24
|
+
module ExtEscape
|
25
|
+
def value
|
26
|
+
c.value
|
27
|
+
end
|
28
|
+
end
|
29
|
+
module NotImplemented
|
30
|
+
def value
|
31
|
+
""
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
module StringConstant
|
37
|
+
def value
|
38
|
+
c.elements.map(&:value).join
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module SQLiterate
|
2
|
+
module Node
|
3
|
+
module LiteralIdentifier
|
4
|
+
def name
|
5
|
+
text_value
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
module QuotedIdentifier
|
10
|
+
def name
|
11
|
+
c.elements.map(&:char).join
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module IdentifierChar
|
16
|
+
module Quote
|
17
|
+
def char
|
18
|
+
'"'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
module Text
|
22
|
+
def char
|
23
|
+
text_value
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
module QualifiedName
|
29
|
+
def name
|
30
|
+
[ schema_name.name, identifier.name ].join '.'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
module AllFields
|
35
|
+
def name
|
36
|
+
:all
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
metadata
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sqliterate
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Emmanuel Bastien
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2015-01-02 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: polyglot
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.3'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.3'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: treetop
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.5'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.5'
|
78
|
+
description: SQLiterate is a SQL parser.
|
79
|
+
email: os@ebastien.name
|
80
|
+
executables: []
|
81
|
+
extensions: []
|
82
|
+
extra_rdoc_files: []
|
83
|
+
files:
|
84
|
+
- lib/sqliterate/grammar/command.treetop
|
85
|
+
- lib/sqliterate/grammar/comment.treetop
|
86
|
+
- lib/sqliterate/grammar/expression.treetop
|
87
|
+
- lib/sqliterate/grammar/identifier.treetop
|
88
|
+
- lib/sqliterate/grammar/keywords.treetop
|
89
|
+
- lib/sqliterate/grammar/literals.treetop
|
90
|
+
- lib/sqliterate/grammar/operator.treetop
|
91
|
+
- lib/sqliterate/grammar/query.treetop
|
92
|
+
- lib/sqliterate/grammar/space.treetop
|
93
|
+
- lib/sqliterate/grammar/string.treetop
|
94
|
+
- lib/sqliterate/node/control/expression.rb
|
95
|
+
- lib/sqliterate/node/control/query.rb
|
96
|
+
- lib/sqliterate/node/control.rb
|
97
|
+
- lib/sqliterate/node/evaluate/expression.rb
|
98
|
+
- lib/sqliterate/node/evaluate/literals.rb
|
99
|
+
- lib/sqliterate/node/evaluate/operator.rb
|
100
|
+
- lib/sqliterate/node/evaluate/string.rb
|
101
|
+
- lib/sqliterate/node/evaluate.rb
|
102
|
+
- lib/sqliterate/node/identify/identifier.rb
|
103
|
+
- lib/sqliterate/node/identify/keywords.rb
|
104
|
+
- lib/sqliterate/node/identify.rb
|
105
|
+
- lib/sqliterate/version.rb
|
106
|
+
- lib/sqliterate.rb
|
107
|
+
- LICENSE
|
108
|
+
- README.md
|
109
|
+
homepage: http://rubygems.org/gems/sqliterate
|
110
|
+
licenses:
|
111
|
+
- MIT
|
112
|
+
post_install_message:
|
113
|
+
rdoc_options: []
|
114
|
+
require_paths:
|
115
|
+
- lib
|
116
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
segments:
|
123
|
+
- 0
|
124
|
+
hash: 3801678425422637441
|
125
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
|
+
none: false
|
127
|
+
requirements:
|
128
|
+
- - ! '>='
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
segments:
|
132
|
+
- 0
|
133
|
+
hash: 3801678425422637441
|
134
|
+
requirements: []
|
135
|
+
rubyforge_project:
|
136
|
+
rubygems_version: 1.8.23
|
137
|
+
signing_key:
|
138
|
+
specification_version: 3
|
139
|
+
summary: A SQL parser.
|
140
|
+
test_files: []
|