tinygql 0.1.0 → 0.1.1
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.
- 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
|