tinygql 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/tinygql/lexer.rb +1 -1
- data/lib/tinygql/nodes.rb.erb +2 -2
- data/lib/tinygql/parser.rb +4 -3
- data/lib/tinygql/version.rb +1 -1
- data/lib/tinygql/visitors.rb.erb +2 -2
- data/test/parser_test.rb +21 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 65e2106ae71f78971f49cbb5d1f718a0d17bcf7071d8cca8e15c7ca261e3deab
|
4
|
+
data.tar.gz: 5e5799f7ee255b306928caaacde79f803af0d5672a36da7404097ff4bd518b77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e52942d40f93c438e5702bbca34b93d5a5156dd3ac939e0cdfb0459d37b163575f76e66c95a5873a2a0409c11d1e7df24bea02f8af91490ad34ed1b9e0b016c
|
7
|
+
data.tar.gz: e4d9add489df9f33191d4684de2550a578ff333879a28e333666b2d4cfe20ff2fda98a1729be0aa7ddd934dd0cc62a01522911b50336e9382e161f04e6325ed9
|
data/lib/tinygql/lexer.rb
CHANGED
data/lib/tinygql/nodes.rb.erb
CHANGED
@@ -8,14 +8,14 @@ module TinyGQL
|
|
8
8
|
<%- end -%>
|
9
9
|
def each(&blk)
|
10
10
|
yield self
|
11
|
-
children.each {
|
11
|
+
children.each { |v| v.each(&blk) }
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
<%- nodes.each do |node| -%>
|
16
16
|
class <%= node.name %> < <%= node.parent ? node.parent : "Node" %>
|
17
17
|
<%- if node.fields.any? -%>
|
18
|
-
attr_reader <%= node.fields.map { ":" +
|
18
|
+
attr_reader <%= node.fields.map { |v| ":" + v.name }.join(", ") %>
|
19
19
|
|
20
20
|
def initialize <%= node.fields.map(&:name).join(", ") %>
|
21
21
|
<%- node.fields.each do |field| -%>
|
data/lib/tinygql/parser.rb
CHANGED
@@ -254,8 +254,9 @@ module TinyGQL
|
|
254
254
|
def implements_interfaces
|
255
255
|
expect_token :IMPLEMENTS
|
256
256
|
list = [self.named_type]
|
257
|
-
while
|
258
|
-
accept_token
|
257
|
+
while true
|
258
|
+
accept_token if at?(:AMP)
|
259
|
+
break unless at?(:IDENTIFIER)
|
259
260
|
list << self.named_type
|
260
261
|
end
|
261
262
|
list
|
@@ -570,7 +571,7 @@ module TinyGQL
|
|
570
571
|
|
571
572
|
def expect_token tok
|
572
573
|
unless at?(tok)
|
573
|
-
raise UnexpectedToken, "Expected token #{tok}, actual: #{token_name} line: #{@lexer.line}"
|
574
|
+
raise UnexpectedToken, "Expected token #{tok}, actual: #{token_name} #{@lexer.token_value} line: #{@lexer.line}"
|
574
575
|
end
|
575
576
|
accept_token
|
576
577
|
end
|
data/lib/tinygql/version.rb
CHANGED
data/lib/tinygql/visitors.rb.erb
CHANGED
@@ -8,7 +8,7 @@ module TinyGQL
|
|
8
8
|
if obj.<%= field.name %>
|
9
9
|
<%- end -%>
|
10
10
|
<%- if field.list? -%>
|
11
|
-
obj.<%= field.name %>.each {
|
11
|
+
obj.<%= field.name %>.each { |v| v.accept self }
|
12
12
|
<%- end -%>
|
13
13
|
<%- if field.node? -%>
|
14
14
|
obj.<%= field.name %>.accept self
|
@@ -29,7 +29,7 @@ module TinyGQL
|
|
29
29
|
if obj.<%= field.name %>
|
30
30
|
<%- end -%>
|
31
31
|
<%- if field.list? -%>
|
32
|
-
obj.<%= field.name %>.each { seed =
|
32
|
+
obj.<%= field.name %>.each { |v| seed = v.fold(self, seed) }
|
33
33
|
<%- end -%>
|
34
34
|
<%- if field.node? -%>
|
35
35
|
seed = obj.<%= field.name %>.fold self, seed
|
data/test/parser_test.rb
CHANGED
@@ -140,5 +140,26 @@ eod
|
|
140
140
|
assert_equal "a", node.aliaz
|
141
141
|
assert_equal 1, node.arguments.length
|
142
142
|
end
|
143
|
+
|
144
|
+
def test_multiple_implements
|
145
|
+
doc = <<-eod
|
146
|
+
type SomeType implements a, b, c {
|
147
|
+
}
|
148
|
+
eod
|
149
|
+
parser = Parser.new doc
|
150
|
+
ast = parser.parse
|
151
|
+
node = ast.find(&:object_type_definition?).first
|
152
|
+
assert_equal ["a", "b", "c"], node.implements_interfaces.map(&:name)
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_multiple_implements_no_end
|
156
|
+
doc = <<-eod
|
157
|
+
type SomeType implements a, b, c
|
158
|
+
eod
|
159
|
+
parser = Parser.new doc
|
160
|
+
ast = parser.parse
|
161
|
+
node = ast.find(&:object_type_definition?).first
|
162
|
+
assert_equal ["a", "b", "c"], node.implements_interfaces.map(&:name)
|
163
|
+
end
|
143
164
|
end
|
144
165
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tinygql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Patterson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-08-
|
11
|
+
date: 2023-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|