aql 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/.rspec +1 -0
  4. data/.travis.yml +18 -0
  5. data/Gemfile +6 -0
  6. data/Gemfile.devtools +64 -0
  7. data/Guardfile +18 -0
  8. data/LICENSE +20 -0
  9. data/README.md +86 -0
  10. data/Rakefile +2 -0
  11. data/TODO +1 -0
  12. data/aql.gemspec +23 -0
  13. data/config/flay.yml +3 -0
  14. data/config/flog.yml +2 -0
  15. data/config/mutant.yml +3 -0
  16. data/config/roodi.yml +18 -0
  17. data/config/site.reek +100 -0
  18. data/config/yardstick.yml +2 -0
  19. data/examples/aql.rb +31 -0
  20. data/lib/aql.rb +62 -0
  21. data/lib/aql/buffer.rb +129 -0
  22. data/lib/aql/constants.rb +19 -0
  23. data/lib/aql/node.rb +45 -0
  24. data/lib/aql/node/attribute.rb +25 -0
  25. data/lib/aql/node/block.rb +28 -0
  26. data/lib/aql/node/call.rb +83 -0
  27. data/lib/aql/node/literal.rb +48 -0
  28. data/lib/aql/node/literal/composed.rb +10 -0
  29. data/lib/aql/node/literal/composed/document.rb +59 -0
  30. data/lib/aql/node/literal/composed/list.rb +42 -0
  31. data/lib/aql/node/literal/primitive.rb +10 -0
  32. data/lib/aql/node/literal/primitive/number.rb +28 -0
  33. data/lib/aql/node/literal/primitive/string.rb +27 -0
  34. data/lib/aql/node/literal/singleton.rb +51 -0
  35. data/lib/aql/node/name.rb +31 -0
  36. data/lib/aql/node/null.rb +21 -0
  37. data/lib/aql/node/operation.rb +20 -0
  38. data/lib/aql/node/operation/binary.rb +33 -0
  39. data/lib/aql/node/operation/for.rb +77 -0
  40. data/lib/aql/node/operation/limit.rb +42 -0
  41. data/lib/aql/node/operation/nary.rb +57 -0
  42. data/lib/aql/node/operation/unary.rb +75 -0
  43. data/lib/aql/node/operator.rb +20 -0
  44. data/lib/aql/node/operator/assignment.rb +28 -0
  45. data/lib/aql/node/operator/binary.rb +92 -0
  46. data/lib/aql/node/operator/nary.rb +48 -0
  47. data/lib/aql/node/operator/ternary.rb +30 -0
  48. data/lib/aql/node/operator/unary.rb +39 -0
  49. data/spec/shared/aql_behavior.rb +7 -0
  50. data/spec/spec_helper.rb +11 -0
  51. data/spec/support/aql_helper.rb +12 -0
  52. data/spec/unit/aql/buffer/append_spec.rb +59 -0
  53. data/spec/unit/aql/buffer/binary_spec.rb +22 -0
  54. data/spec/unit/aql/buffer/class_methods/utf8_encode_spec.rb +21 -0
  55. data/spec/unit/aql/buffer/content_spec.rb +24 -0
  56. data/spec/unit/aql/buffer/delimited_spec.rb +31 -0
  57. data/spec/unit/aql/buffer/parentheses_spec.rb +33 -0
  58. data/spec/unit/aql/buffer/wrap_delimited_spec.rb +42 -0
  59. data/spec/unit/aql/class_methods/literal_node_spec.rb +15 -0
  60. data/spec/unit/aql/class_methods/name_node_spec.rb +19 -0
  61. data/spec/unit/aql/node/attribute/aql_spec.rb +22 -0
  62. data/spec/unit/aql/node/block/aql_spec.rb +28 -0
  63. data/spec/unit/aql/node/call/aql_spec.rb +39 -0
  64. data/spec/unit/aql/node/literal/class_methods/build_spec.rb +139 -0
  65. data/spec/unit/aql/node/literal/class_methods/construct_spec.rb +16 -0
  66. data/spec/unit/aql/node/literal/class_methods/handle_spec.rb +22 -0
  67. data/spec/unit/aql/node/literal/composed/document/aql_spec.rb +32 -0
  68. data/spec/unit/aql/node/literal/composed/document/attribute/aql_spec.rb +15 -0
  69. data/spec/unit/aql/node/literal/composed/document/class_methods/construct_spec.rb +24 -0
  70. data/spec/unit/aql/node/literal/composed/list/aql_spec.rb +20 -0
  71. data/spec/unit/aql/node/literal/composed/list/class_methods/construct_spec.rb +37 -0
  72. data/spec/unit/aql/node/literal/primitive/number/aql_spec.rb +23 -0
  73. data/spec/unit/aql/node/literal/primitive/string/aql_spec.rb +21 -0
  74. data/spec/unit/aql/node/literal/singleton/aql_spec.rb +14 -0
  75. data/spec/unit/aql/node/literal/singleton/class_methods/construct_spec.rb +30 -0
  76. data/spec/unit/aql/node/name/aql_spec.rb +33 -0
  77. data/spec/unit/aql/node/null/aql_spec.rb +7 -0
  78. data/spec/unit/aql/node/operation/binary/let/aql_spec.rb +10 -0
  79. data/spec/unit/aql/node/operation/for/aql_spec.rb +18 -0
  80. data/spec/unit/aql/node/operation/keyword_spec.rb +16 -0
  81. data/spec/unit/aql/node/operation/limit/aql_spec.rb +19 -0
  82. data/spec/unit/aql/node/operation/nary/aql_spec.rb +16 -0
  83. data/spec/unit/aql/node/operation/nary/collect/into/aql_spec.rb +11 -0
  84. data/spec/unit/aql/node/operation/nary/sort/aql_spec.rb +22 -0
  85. data/spec/unit/aql/node/operation/unary/aql_spec.rb +12 -0
  86. data/spec/unit/aql/node/operation/unary/direction/aql_spec.rb +14 -0
  87. data/spec/unit/aql/node/operation/unary/filter/aql_spec.rb +20 -0
  88. data/spec/unit/aql/node/operation/unary/return/aql_spec.rb +17 -0
  89. data/spec/unit/aql/node/operator/assignment/aql_spec.rb +10 -0
  90. data/spec/unit/aql/node/operator/binary/aql_spec.rb +15 -0
  91. data/spec/unit/aql/node/operator/nary/aql_spec.rb +31 -0
  92. data/spec/unit/aql/node/operator/operator_spec.rb +18 -0
  93. data/spec/unit/aql/node/operator/ternary/aql_spec.rb +12 -0
  94. data/spec/unit/aql/node/operator/unary/aql_spec.rb +12 -0
  95. data/spec/unit/aql/node/visit_spec.rb +27 -0
  96. metadata +262 -0
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe AQL::Node::Operation::Unary::Return, '#aql' do
4
+ let(:object) { described_class.new(expression) }
5
+
6
+ context 'with scalar expression' do
7
+ let(:expression) { AQL::Node::Literal.build(1) }
8
+
9
+ expect_aql('RETURN 1')
10
+ end
11
+
12
+ context 'with document expression' do
13
+ let(:expression) { AQL::Node::Literal.build(1 => 1) }
14
+
15
+ expect_aql('RETURN {1: 1}')
16
+ end
17
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe AQL::Node::Operator::Assignment, '#aql' do
4
+
5
+ let(:name) { AQL.name_node('name') }
6
+ let(:value) { AQL::Node::Literal.build(false) }
7
+ let(:object) { described_class.new(name, value) }
8
+
9
+ expect_aql('`name` = false')
10
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe AQL::Node::Operator::Binary, '#aql' do
4
+ let(:class_under_test) do
5
+ Class.new(described_class) do
6
+ const_set('SYMBOL', '||')
7
+ end
8
+ end
9
+
10
+ let(:left) { AQL::Node::Literal.build(true) }
11
+ let(:right) { AQL::Node::Literal.build(false) }
12
+ let(:object) { class_under_test.new(left, right) }
13
+
14
+ expect_aql('(true || false)')
15
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe AQL::Node::Operator::Nary, '#aql' do
4
+
5
+ let(:object) { class_under_test.new(body) }
6
+
7
+ let(:class_under_test) do
8
+ Class.new(described_class) do
9
+ const_set('SYMBOL', 'foo')
10
+ end
11
+ end
12
+
13
+ let(:a) { AQL.name_node(:a) }
14
+ let(:b) { AQL.name_node(:b) }
15
+ let(:c) { AQL.name_node(:c) }
16
+
17
+ context 'with one element body' do
18
+ let(:body) { [a] }
19
+ expect_aql '`a`'
20
+ end
21
+
22
+ context 'with two element body' do
23
+ let(:body) { [a, b] }
24
+ expect_aql '(`a` foo `b`)'
25
+ end
26
+
27
+ context 'with three element body' do
28
+ let(:body) { [a, b, c] }
29
+ expect_aql '(`a` foo `b` foo `c`)'
30
+ end
31
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe AQL::Node::Operator, '#operator' do
4
+ let(:class_under_test) do
5
+ symbol = self.symbol
6
+ Class.new(described_class) do
7
+ const_set('SYMBOL', symbol)
8
+ public :operator
9
+ end
10
+ end
11
+
12
+ let(:symbol) { mock('Symbol') }
13
+ let(:object) { class_under_test.new }
14
+
15
+ subject { object.operator }
16
+
17
+ it { should be(symbol) }
18
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe AQL::Node::Operator::Ternary, '#aql' do
4
+
5
+ let(:condition) { AQL::Node::Literal.build(true) }
6
+ let(:left) { AQL::Node::Literal.build('left') }
7
+ let(:right) { AQL::Node::Literal.build('right') }
8
+
9
+ let(:object) { described_class.new(condition, left, right) }
10
+
11
+ expect_aql('true ? "left" : "right"')
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe AQL::Node::Operator::Unary, '#aql' do
4
+ let(:class_under_test) do
5
+ Class.new(described_class) do
6
+ const_set('SYMBOL', ':')
7
+ end
8
+ end
9
+
10
+ let(:object) { class_under_test.new(AQL::Node::Literal.build(1)) }
11
+ expect_aql(':1')
12
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe AQL::Node, '#visit' do
4
+ let(:class_under_test) do
5
+ Class.new(described_class) do
6
+
7
+ private
8
+
9
+ def emit(buffer)
10
+ buffer.append('foo')
11
+ end
12
+
13
+ end
14
+ end
15
+
16
+ let(:object) { class_under_test.new }
17
+
18
+ subject { object.visit(buffer) }
19
+
20
+ let(:buffer) { AQL::Buffer.new }
21
+
22
+ it 'should emit node' do
23
+ expect { subject }.to change { buffer.content }.from('').to('foo')
24
+ end
25
+
26
+ it_should_behave_like 'a command method'
27
+ end
metadata ADDED
@@ -0,0 +1,262 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aql
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Markus Schirp
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-04-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: backports
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ - - '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 3.0.3
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
30
+ - - '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 3.0.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: adamantium
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ~>
38
+ - !ruby/object:Gem::Version
39
+ version: 0.0.7
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: 0.0.7
47
+ - !ruby/object:Gem::Dependency
48
+ name: equalizer
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.0.5
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ version: 0.0.5
61
+ - !ruby/object:Gem::Dependency
62
+ name: abstract_type
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 0.0.5
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ version: 0.0.5
75
+ - !ruby/object:Gem::Dependency
76
+ name: concord
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ~>
80
+ - !ruby/object:Gem::Version
81
+ version: 0.0.3
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ version: 0.0.3
89
+ description:
90
+ email: mbj@seonic.net
91
+ executables: []
92
+ extensions: []
93
+ extra_rdoc_files:
94
+ - README.md
95
+ files:
96
+ - .gitignore
97
+ - .rspec
98
+ - .travis.yml
99
+ - Gemfile
100
+ - Gemfile.devtools
101
+ - Guardfile
102
+ - LICENSE
103
+ - README.md
104
+ - Rakefile
105
+ - TODO
106
+ - aql.gemspec
107
+ - config/flay.yml
108
+ - config/flog.yml
109
+ - config/mutant.yml
110
+ - config/roodi.yml
111
+ - config/site.reek
112
+ - config/yardstick.yml
113
+ - examples/aql.rb
114
+ - lib/aql.rb
115
+ - lib/aql/buffer.rb
116
+ - lib/aql/constants.rb
117
+ - lib/aql/node.rb
118
+ - lib/aql/node/attribute.rb
119
+ - lib/aql/node/block.rb
120
+ - lib/aql/node/call.rb
121
+ - lib/aql/node/literal.rb
122
+ - lib/aql/node/literal/composed.rb
123
+ - lib/aql/node/literal/composed/document.rb
124
+ - lib/aql/node/literal/composed/list.rb
125
+ - lib/aql/node/literal/primitive.rb
126
+ - lib/aql/node/literal/primitive/number.rb
127
+ - lib/aql/node/literal/primitive/string.rb
128
+ - lib/aql/node/literal/singleton.rb
129
+ - lib/aql/node/name.rb
130
+ - lib/aql/node/null.rb
131
+ - lib/aql/node/operation.rb
132
+ - lib/aql/node/operation/binary.rb
133
+ - lib/aql/node/operation/for.rb
134
+ - lib/aql/node/operation/limit.rb
135
+ - lib/aql/node/operation/nary.rb
136
+ - lib/aql/node/operation/unary.rb
137
+ - lib/aql/node/operator.rb
138
+ - lib/aql/node/operator/assignment.rb
139
+ - lib/aql/node/operator/binary.rb
140
+ - lib/aql/node/operator/nary.rb
141
+ - lib/aql/node/operator/ternary.rb
142
+ - lib/aql/node/operator/unary.rb
143
+ - spec/shared/aql_behavior.rb
144
+ - spec/spec_helper.rb
145
+ - spec/support/aql_helper.rb
146
+ - spec/unit/aql/buffer/append_spec.rb
147
+ - spec/unit/aql/buffer/binary_spec.rb
148
+ - spec/unit/aql/buffer/class_methods/utf8_encode_spec.rb
149
+ - spec/unit/aql/buffer/content_spec.rb
150
+ - spec/unit/aql/buffer/delimited_spec.rb
151
+ - spec/unit/aql/buffer/parentheses_spec.rb
152
+ - spec/unit/aql/buffer/wrap_delimited_spec.rb
153
+ - spec/unit/aql/class_methods/literal_node_spec.rb
154
+ - spec/unit/aql/class_methods/name_node_spec.rb
155
+ - spec/unit/aql/node/attribute/aql_spec.rb
156
+ - spec/unit/aql/node/block/aql_spec.rb
157
+ - spec/unit/aql/node/call/aql_spec.rb
158
+ - spec/unit/aql/node/literal/class_methods/build_spec.rb
159
+ - spec/unit/aql/node/literal/class_methods/construct_spec.rb
160
+ - spec/unit/aql/node/literal/class_methods/handle_spec.rb
161
+ - spec/unit/aql/node/literal/composed/document/aql_spec.rb
162
+ - spec/unit/aql/node/literal/composed/document/attribute/aql_spec.rb
163
+ - spec/unit/aql/node/literal/composed/document/class_methods/construct_spec.rb
164
+ - spec/unit/aql/node/literal/composed/list/aql_spec.rb
165
+ - spec/unit/aql/node/literal/composed/list/class_methods/construct_spec.rb
166
+ - spec/unit/aql/node/literal/primitive/number/aql_spec.rb
167
+ - spec/unit/aql/node/literal/primitive/string/aql_spec.rb
168
+ - spec/unit/aql/node/literal/singleton/aql_spec.rb
169
+ - spec/unit/aql/node/literal/singleton/class_methods/construct_spec.rb
170
+ - spec/unit/aql/node/name/aql_spec.rb
171
+ - spec/unit/aql/node/null/aql_spec.rb
172
+ - spec/unit/aql/node/operation/binary/let/aql_spec.rb
173
+ - spec/unit/aql/node/operation/for/aql_spec.rb
174
+ - spec/unit/aql/node/operation/keyword_spec.rb
175
+ - spec/unit/aql/node/operation/limit/aql_spec.rb
176
+ - spec/unit/aql/node/operation/nary/aql_spec.rb
177
+ - spec/unit/aql/node/operation/nary/collect/into/aql_spec.rb
178
+ - spec/unit/aql/node/operation/nary/sort/aql_spec.rb
179
+ - spec/unit/aql/node/operation/unary/aql_spec.rb
180
+ - spec/unit/aql/node/operation/unary/direction/aql_spec.rb
181
+ - spec/unit/aql/node/operation/unary/filter/aql_spec.rb
182
+ - spec/unit/aql/node/operation/unary/return/aql_spec.rb
183
+ - spec/unit/aql/node/operator/assignment/aql_spec.rb
184
+ - spec/unit/aql/node/operator/binary/aql_spec.rb
185
+ - spec/unit/aql/node/operator/nary/aql_spec.rb
186
+ - spec/unit/aql/node/operator/operator_spec.rb
187
+ - spec/unit/aql/node/operator/ternary/aql_spec.rb
188
+ - spec/unit/aql/node/operator/unary/aql_spec.rb
189
+ - spec/unit/aql/node/visit_spec.rb
190
+ homepage: http://github.com/mbj/aql
191
+ licenses:
192
+ - MIT
193
+ metadata: {}
194
+ post_install_message:
195
+ rdoc_options: []
196
+ require_paths:
197
+ - lib
198
+ required_ruby_version: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - '>='
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ required_rubygems_version: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - '>='
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ requirements: []
209
+ rubyforge_project:
210
+ rubygems_version: 2.0.0
211
+ signing_key:
212
+ specification_version: 4
213
+ summary: The ArangoDB AQL AST. Intended for query generation.
214
+ test_files:
215
+ - spec/shared/aql_behavior.rb
216
+ - spec/spec_helper.rb
217
+ - spec/support/aql_helper.rb
218
+ - spec/unit/aql/buffer/append_spec.rb
219
+ - spec/unit/aql/buffer/binary_spec.rb
220
+ - spec/unit/aql/buffer/class_methods/utf8_encode_spec.rb
221
+ - spec/unit/aql/buffer/content_spec.rb
222
+ - spec/unit/aql/buffer/delimited_spec.rb
223
+ - spec/unit/aql/buffer/parentheses_spec.rb
224
+ - spec/unit/aql/buffer/wrap_delimited_spec.rb
225
+ - spec/unit/aql/class_methods/literal_node_spec.rb
226
+ - spec/unit/aql/class_methods/name_node_spec.rb
227
+ - spec/unit/aql/node/attribute/aql_spec.rb
228
+ - spec/unit/aql/node/block/aql_spec.rb
229
+ - spec/unit/aql/node/call/aql_spec.rb
230
+ - spec/unit/aql/node/literal/class_methods/build_spec.rb
231
+ - spec/unit/aql/node/literal/class_methods/construct_spec.rb
232
+ - spec/unit/aql/node/literal/class_methods/handle_spec.rb
233
+ - spec/unit/aql/node/literal/composed/document/aql_spec.rb
234
+ - spec/unit/aql/node/literal/composed/document/attribute/aql_spec.rb
235
+ - spec/unit/aql/node/literal/composed/document/class_methods/construct_spec.rb
236
+ - spec/unit/aql/node/literal/composed/list/aql_spec.rb
237
+ - spec/unit/aql/node/literal/composed/list/class_methods/construct_spec.rb
238
+ - spec/unit/aql/node/literal/primitive/number/aql_spec.rb
239
+ - spec/unit/aql/node/literal/primitive/string/aql_spec.rb
240
+ - spec/unit/aql/node/literal/singleton/aql_spec.rb
241
+ - spec/unit/aql/node/literal/singleton/class_methods/construct_spec.rb
242
+ - spec/unit/aql/node/name/aql_spec.rb
243
+ - spec/unit/aql/node/null/aql_spec.rb
244
+ - spec/unit/aql/node/operation/binary/let/aql_spec.rb
245
+ - spec/unit/aql/node/operation/for/aql_spec.rb
246
+ - spec/unit/aql/node/operation/keyword_spec.rb
247
+ - spec/unit/aql/node/operation/limit/aql_spec.rb
248
+ - spec/unit/aql/node/operation/nary/aql_spec.rb
249
+ - spec/unit/aql/node/operation/nary/collect/into/aql_spec.rb
250
+ - spec/unit/aql/node/operation/nary/sort/aql_spec.rb
251
+ - spec/unit/aql/node/operation/unary/aql_spec.rb
252
+ - spec/unit/aql/node/operation/unary/direction/aql_spec.rb
253
+ - spec/unit/aql/node/operation/unary/filter/aql_spec.rb
254
+ - spec/unit/aql/node/operation/unary/return/aql_spec.rb
255
+ - spec/unit/aql/node/operator/assignment/aql_spec.rb
256
+ - spec/unit/aql/node/operator/binary/aql_spec.rb
257
+ - spec/unit/aql/node/operator/nary/aql_spec.rb
258
+ - spec/unit/aql/node/operator/operator_spec.rb
259
+ - spec/unit/aql/node/operator/ternary/aql_spec.rb
260
+ - spec/unit/aql/node/operator/unary/aql_spec.rb
261
+ - spec/unit/aql/node/visit_spec.rb
262
+ has_rdoc: