sqliterate 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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,3 @@
1
+ # coding: utf-8
2
+ require 'sqliterate/node/identify/keywords'
3
+ require 'sqliterate/node/identify/identifier'
@@ -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
@@ -0,0 +1,9 @@
1
+ module SQLiterate
2
+ module Node
3
+ module TypeName
4
+ def name
5
+ text_value.to_sym
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module SQLiterate
2
+ VERSION = '0.1.0'
3
+ 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: []