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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6bb94d776ff356520312d76baadfe817ca813c617165479b3ed49887566fc4ff
4
- data.tar.gz: e5c1b0e354a07108d1e237b8e10c378b58df57cc093c4c75d7a96e6a64982c3a
3
+ metadata.gz: 65e2106ae71f78971f49cbb5d1f718a0d17bcf7071d8cca8e15c7ca261e3deab
4
+ data.tar.gz: 5e5799f7ee255b306928caaacde79f803af0d5672a36da7404097ff4bd518b77
5
5
  SHA512:
6
- metadata.gz: 7e96c6748835b72e3d2a38c312d7eb0b67ba0ddf77cc11aab8ac5d43a1bf83025b23526beb3409602a23a78d91a10f4d3d4f9d2ec94d3951c0035620de401426
7
- data.tar.gz: df88fd036d265ba22c28cba79f7b76df502e20d30387f6d76a6838ddc743d0dd4d9a9373ce73282a67d6cbfdf00f55e6383865d2e28e9a338ad1fdee72183661
6
+ metadata.gz: 3e52942d40f93c438e5702bbca34b93d5a5156dd3ac939e0cdfb0459d37b163575f76e66c95a5873a2a0409c11d1e7df24bea02f8af91490ad34ed1b9e0b016c
7
+ data.tar.gz: e4d9add489df9f33191d4684de2550a578ff333879a28e333666b2d4cfe20ff2fda98a1729be0aa7ddd934dd0cc62a01522911b50336e9382e161f04e6325ed9
data/lib/tinygql/lexer.rb CHANGED
@@ -98,7 +98,7 @@ module TinyGQL
98
98
  end
99
99
 
100
100
  def line
101
- @scan.string[0, @scan.pos].count("\n")
101
+ @scan.string[0, @scan.pos].count("\n") + 1
102
102
  end
103
103
 
104
104
  def done?
@@ -8,14 +8,14 @@ module TinyGQL
8
8
  <%- end -%>
9
9
  def each(&blk)
10
10
  yield self
11
- children.each { _1.each(&blk) }
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 { ":" + _1.name }.join(", ") %>
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| -%>
@@ -254,8 +254,9 @@ module TinyGQL
254
254
  def implements_interfaces
255
255
  expect_token :IMPLEMENTS
256
256
  list = [self.named_type]
257
- while at?(:AMP)
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
@@ -1,3 +1,3 @@
1
1
  module TinyGQL
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -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 { _1.accept self }
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 = _1.fold(self, 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.0
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-10 00:00:00.000000000 Z
11
+ date: 2023-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake