gql 0.0.8 → 0.0.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: afade4dbb867e9e0a602148b69032b9993271a70
4
- data.tar.gz: b2fbe5c310949e6f14c76bd736297e8a33c06874
3
+ metadata.gz: cb700c03e6fe7d133fe2bc42736b5908e66174ac
4
+ data.tar.gz: da41c9aefb85d60137e6fad700993632f66a5b06
5
5
  SHA512:
6
- metadata.gz: 8db790c55fb17a480541fb5f10af5133e535452e17dd701d569a47475075f125848ecd62c08194db2f3007aa74281349c26acd0c70e091fbb49ad8aca9291b8b
7
- data.tar.gz: 4ac70838a5ac05d0f46362ddd98ee0834e2c5bab6ca49c98e6ddfe91400191f4730e7281553a025d43c05a5abaaf2fcfb0df365cfb29d45e32f0bb2cb280c30a
6
+ metadata.gz: cf3fcd9f66515866b529288aacf23f31980c2e2acb6d49c0b558f9908de0b6912ebbccbfc24099b93cfd8566c0076b011bae32c10045acc889d03e89934fc924
7
+ data.tar.gz: fdfa1d2cb54671fb57c340beff95d43c3644874c46b35ff90d825362a8bb6616f6c5afe3981ca1dcb81affa20f9ffcb5c344a47ac16b6e42b69f4714e4c5840e
data/lib/gql.rb CHANGED
@@ -6,13 +6,12 @@ module GQL
6
6
  autoload :Connection, 'gql/connection'
7
7
  autoload :Error, 'gql/errors'
8
8
  autoload :Executor, 'gql/executor'
9
- autoload :Field, 'gql/field'
10
9
  autoload :List, 'gql/list'
11
10
  autoload :Node, 'gql/node'
12
11
  autoload :Number, 'gql/number'
13
12
  autoload :Object, 'gql/object'
14
13
  autoload :Parser, 'gql/parser'
15
- autoload :Simple, 'gql/simple'
14
+ autoload :Raw, 'gql/raw'
16
15
  autoload :String, 'gql/string'
17
16
  autoload :TestCase, 'gql/test_case'
18
17
  autoload :VERSION, 'gql/version'
@@ -32,9 +31,9 @@ module GQL
32
31
  autoload :Call, 'gql/schema/call'
33
32
  autoload :Field, 'gql/schema/field'
34
33
  autoload :List, 'gql/schema/list'
35
- autoload :Node, 'gql/schema/node'
36
34
  autoload :Parameter, 'gql/schema/parameter'
37
35
  autoload :Placeholder, 'gql/schema/placeholder'
36
+ autoload :Root, 'gql/schema/root'
38
37
  end
39
38
 
40
39
  extend(Module.new {
data/lib/gql/array.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'active_support/core_ext/class/attribute'
2
2
 
3
3
  module GQL
4
- class Array < Field
4
+ class Array < Node
5
5
  class_attribute :item_class, instance_accessor: false, instance_predicate: false
6
6
 
7
7
  class << self
data/lib/gql/boolean.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module GQL
2
- class Boolean < Simple
2
+ class Boolean < Raw
3
3
  end
4
4
  end
data/lib/gql/call.rb CHANGED
@@ -8,6 +8,21 @@ module GQL
8
8
  def returns(result_class)
9
9
  self.result_class = result_class
10
10
  end
11
+
12
+ def execute(caller_class, ast_node, target, variables, context)
13
+ args = substitute_variables(ast_node.arguments, variables)
14
+ target = new(target, context).execute(*args)
15
+
16
+ next_class = result_class || caller_class
17
+
18
+ result = next_class.new(ast_node, target, variables, context)
19
+ result.value
20
+ end
21
+
22
+ private
23
+ def substitute_variables(args, variables)
24
+ args.map { |arg| arg.is_a?(::Symbol) ? variables[arg] : arg }
25
+ end
11
26
  end
12
27
 
13
28
  attr_reader :target, :context
@@ -19,20 +34,5 @@ module GQL
19
34
  def execute(*)
20
35
  raise NotImplementedError, 'override in subclass'
21
36
  end
22
-
23
- def result_for(caller_class, ast_node, variables)
24
- args = substitute_variables(ast_node.arguments, variables)
25
- target = execute(*args)
26
-
27
- result_class = self.class.result_class || caller_class
28
-
29
- result = result_class.new(ast_node, target, variables, context)
30
- result.value
31
- end
32
-
33
- private
34
- def substitute_variables(args, variables)
35
- args.map { |arg| arg.is_a?(::Symbol) ? variables[arg] : arg }
36
- end
37
37
  end
38
38
  end
data/lib/gql/config.rb CHANGED
@@ -10,7 +10,7 @@ module GQL
10
10
  end
11
11
 
12
12
  if ENV['DEBUG']
13
- value.call :_schema, -> { context[:_schema_root] }, returns: Schema::Node
13
+ value.call :_schema, -> { context[:_schema_root] }, returns: Schema::Root
14
14
  end
15
15
 
16
16
  @@root_node_class = value
@@ -1,7 +1,7 @@
1
1
  require 'active_support/core_ext/class/attribute'
2
2
 
3
3
  module GQL
4
- class Connection < Field
4
+ class Connection < Node
5
5
  class_attribute :list_class, instance_accessor: false, instance_predicate: false
6
6
  class_attribute :item_class, instance_accessor: false, instance_predicate: false
7
7
 
data/lib/gql/node.rb CHANGED
@@ -17,12 +17,19 @@ module GQL
17
17
  end
18
18
  end
19
19
 
20
- class_attribute :calls, :fields, instance_accessor: false, instance_predicate: false
20
+ class_attribute :id, :proc, :calls, :fields, instance_accessor: false, instance_predicate: false
21
21
 
22
22
  self.calls = {}
23
23
  self.fields = {}
24
24
 
25
25
  class << self
26
+ def build_class(id, proc, options = {})
27
+ Class.new(self).tap do |field_class|
28
+ field_class.id = id.to_s
29
+ field_class.proc = proc
30
+ end
31
+ end
32
+
26
33
  def call(id, *args)
27
34
  if id.is_a? Hash
28
35
  id.each do |name, call_class|
@@ -76,9 +83,9 @@ module GQL
76
83
  def field(id, *args)
77
84
  options = args.extract_options!
78
85
  proc = args.shift || -> { target.public_send(id) }
79
- type = options.delete(:type) || Field
86
+ type = options.delete(:type) || Node
80
87
 
81
- Field.validate_is_subclass! type, 'type'
88
+ Node.validate_is_subclass! type, 'type'
82
89
 
83
90
  type.build_class(id, proc, options).tap do |field_class|
84
91
  self.const_set "#{id.to_s.camelize}Field", field_class
@@ -90,7 +97,7 @@ module GQL
90
97
  id = id_or_proc.is_a?(Proc) ? nil : id_or_proc
91
98
  proc = id ? -> { target.public_send(id) } : id_or_proc
92
99
 
93
- field :cursor, proc, type: Simple
100
+ field :cursor, proc, type: Raw
94
101
  end
95
102
 
96
103
  def validate_is_subclass!(subclass, name)
@@ -104,14 +111,19 @@ module GQL
104
111
  end
105
112
 
106
113
  def respond_to?(method, *args)
107
- GQL.field_types.has_key?(method) || super
114
+ super || GQL.field_types.has_key?(method)
108
115
  end
109
116
 
110
117
  def method_missing(method, *args, &block)
111
118
  if type = GQL.field_types[method]
112
- options = args.extract_options!.merge(type: type)
119
+ Node.define_singleton_method method do |*margs, &mblock|
120
+ options = margs.extract_options!.merge(type: type)
121
+ margs = margs.push(options)
122
+
123
+ field(*margs, &mblock)
124
+ end
113
125
 
114
- field(*args.push(options), &block)
126
+ send method, *args, &block
115
127
  else
116
128
  super
117
129
  end
@@ -144,8 +156,7 @@ module GQL
144
156
  raise Errors::UndefinedCall.new(ast_call.id, self.class)
145
157
  end
146
158
 
147
- call = call_class.new(target, context)
148
- call.result_for self.class, ast_call, variables
159
+ call_class.execute(self.class, ast_call, target, variables, context)
149
160
  end
150
161
 
151
162
  def value_of_fields(ast_fields)
data/lib/gql/number.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module GQL
2
- class Number < Simple
2
+ class Number < Raw
3
3
  # This is just an example call. Monkeypatch class to add your own.
4
4
  call :is_zero, -> { target.zero? }, returns: Boolean
5
5
  end
data/lib/gql/object.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'active_support/core_ext/class/attribute'
2
2
 
3
3
  module GQL
4
- class Object < Field
4
+ class Object < Node
5
5
  class_attribute :node_class, instance_accessor: false, instance_predicate: false
6
6
 
7
7
  class << self
data/lib/gql/parser.rb CHANGED
@@ -27,7 +27,7 @@ module_eval(<<'...end parser.racc/module_eval...', 'parser.racc', 135)
27
27
  end
28
28
  end
29
29
 
30
- class Field < Struct.new(:id, :alias_id, :call, :fields)
30
+ class Node < Struct.new(:id, :alias_id, :call, :fields)
31
31
  def as_json(*)
32
32
  {
33
33
  id: id,
@@ -187,7 +187,7 @@ racc_reduce_table = [
187
187
  1, 41, :_reduce_46,
188
188
  1, 41, :_reduce_47,
189
189
  1, 41, :_reduce_48,
190
- 1, 44, :_reduce_49,
190
+ 1, 44, :_reduce_none,
191
191
  1, 27, :_reduce_50 ]
192
192
 
193
193
  racc_reduce_n = 51
@@ -300,14 +300,14 @@ module_eval(<<'.,.,', 'parser.racc', 4)
300
300
 
301
301
  module_eval(<<'.,.,', 'parser.racc', 8)
302
302
  def _reduce_2(val, _values, result)
303
- result = Field.new(nil, nil, val[0], nil )
303
+ result = Node.new(nil, nil, val[0], nil )
304
304
  result
305
305
  end
306
306
  .,.,
307
307
 
308
308
  module_eval(<<'.,.,', 'parser.racc', 9)
309
309
  def _reduce_3(val, _values, result)
310
- result = Field.new(nil, nil, nil, val[1])
310
+ result = Node.new(nil, nil, nil, val[1])
311
311
  result
312
312
  end
313
313
  .,.,
@@ -402,42 +402,42 @@ module_eval(<<'.,.,', 'parser.racc', 41)
402
402
 
403
403
  module_eval(<<'.,.,', 'parser.racc', 45)
404
404
  def _reduce_18(val, _values, result)
405
- result = Field.new(val[0], val[2], nil, val[1].presence)
405
+ result = Node.new(val[0], val[2], nil, val[1].presence)
406
406
  result
407
407
  end
408
408
  .,.,
409
409
 
410
410
  module_eval(<<'.,.,', 'parser.racc', 46)
411
411
  def _reduce_19(val, _values, result)
412
- result = Field.new(val[0], val[3], val[2], nil )
412
+ result = Node.new(val[0], val[3], val[2], nil )
413
413
  result
414
414
  end
415
415
  .,.,
416
416
 
417
417
  module_eval(<<'.,.,', 'parser.racc', 47)
418
418
  def _reduce_20(val, _values, result)
419
- result = Field.new(val[0], val[1], nil, nil )
419
+ result = Node.new(val[0], val[1], nil, nil )
420
420
  result
421
421
  end
422
422
  .,.,
423
423
 
424
424
  module_eval(<<'.,.,', 'parser.racc', 48)
425
425
  def _reduce_21(val, _values, result)
426
- result = Field.new(val[0], nil, nil, val[1].presence)
426
+ result = Node.new(val[0], nil, nil, val[1].presence)
427
427
  result
428
428
  end
429
429
  .,.,
430
430
 
431
431
  module_eval(<<'.,.,', 'parser.racc', 49)
432
432
  def _reduce_22(val, _values, result)
433
- result = Field.new(val[0], nil, val[2], nil )
433
+ result = Node.new(val[0], nil, val[2], nil )
434
434
  result
435
435
  end
436
436
  .,.,
437
437
 
438
438
  module_eval(<<'.,.,', 'parser.racc', 50)
439
439
  def _reduce_23(val, _values, result)
440
- result = Field.new(val[0], nil, nil, nil )
440
+ result = Node.new(val[0], nil, nil, nil )
441
441
  result
442
442
  end
443
443
  .,.,
@@ -577,12 +577,7 @@ module_eval(<<'.,.,', 'parser.racc', 114)
577
577
  end
578
578
  .,.,
579
579
 
580
- module_eval(<<'.,.,', 'parser.racc', 118)
581
- def _reduce_49(val, _values, result)
582
- result = unescape_string(val[0])
583
- result
584
- end
585
- .,.,
580
+ # reduce 49 omitted
586
581
 
587
582
  module_eval(<<'.,.,', 'parser.racc', 121)
588
583
  def _reduce_50(val, _values, result)
@@ -1,5 +1,5 @@
1
1
  module GQL
2
- class Simple < Field
2
+ class Raw < Node
3
3
  def raw_value
4
4
  target
5
5
  end
@@ -1,6 +1,6 @@
1
1
  module GQL
2
2
  module Schema
3
- class Node < GQL::Node
3
+ class Root < GQL::Node
4
4
  string :type, -> { target.name }
5
5
  connection :calls, -> { target.calls.values }, list_class: List, item_class: Call
6
6
  connection :fields, -> { target.fields.values }, list_class: List, item_class: Field
data/lib/gql/string.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module GQL
2
- class String < Simple
2
+ class String < Raw
3
3
  # These are just example calls. Monkeypatch class to add your own.
4
4
  call :upcase
5
5
  call :downcase
data/lib/gql/tokenizer.rb CHANGED
@@ -64,7 +64,7 @@ class GQL::Parser < Racc::Parser
64
64
  action { @state = :REM; nil }
65
65
 
66
66
  when (text = @ss.scan(/"(?:[^"\\]|\\["\\\/bfnrt]|\\u[0-9a-fA-F]{4})*"/))
67
- action { [:STRING, unescape_string(text)] }
67
+ action { [:STRING, convert_json(text)] }
68
68
 
69
69
  when (text = @ss.scan(/-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/))
70
70
  action { [:NUMBER, text] }
@@ -131,39 +131,8 @@ class GQL::Parser < Racc::Parser
131
131
  end # def _next_token
132
132
 
133
133
  private
134
- UNESCAPE_MAP = Hash.new { |h, k| h[k] = k.chr }
135
- UNESCAPE_MAP.update(
136
- ?" => '"',
137
- ?\\ => '\\',
138
- ?/ => '/',
139
- ?b => "\b",
140
- ?f => "\f",
141
- ?n => "\n",
142
- ?r => "\r",
143
- ?t => "\t",
144
- ?u => nil,
145
- )
146
- EMPTY_8BIT_STRING = ''
147
- if String.method_defined? :encode
148
- EMPTY_8BIT_STRING.force_encoding Encoding::ASCII_8BIT
149
- end
150
- def unescape_string(str)
151
- string = str.gsub(/^"|"$/, '').gsub(%r((?:\\[\\bfnrt"/]|(?:\\u(?:[A-Fa-f\d]{4}))+|\\[\x20-\xff]))n) do |c|
152
- if u = UNESCAPE_MAP[$&[1]]
153
- u
154
- else # \uXXXX
155
- bytes = EMPTY_8BIT_STRING.dup
156
- i = 0
157
- while c[6 * i] == ?\\ && c[6 * i + 1] == ?u
158
- bytes << c[6 * i + 2, 2].to_i(16) << c[6 * i + 4, 2].to_i(16)
159
- i += 1
160
- end
161
- JSON.iconv('utf-8', 'utf-16be', bytes)
162
- end
163
- end
164
- if string.respond_to? :force_encoding
165
- string.force_encoding ::Encoding::UTF_8
166
- end
167
- string
134
+ require 'multi_json'
135
+ def convert_json(str)
136
+ MultiJson.load("[#{str}]").first
168
137
  end
169
138
  end # class
data/lib/gql/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module GQL
2
- VERSION = '0.0.8'
2
+ VERSION = '0.0.9'
3
3
  end
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Andert
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2015-03-08 00:00:00.000000000 Z
12
12
  dependencies:
@@ -72,14 +72,28 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '4.2'
75
+ version: '4.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '4.2'
82
+ version: '4.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: multi_json
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.0'
83
97
  description:
84
98
  email:
85
99
  - mandert@gmail.com
@@ -87,15 +101,8 @@ executables: []
87
101
  extensions: []
88
102
  extra_rdoc_files: []
89
103
  files:
90
- - ".gitignore"
91
- - Gemfile
92
104
  - LICENSE.txt
93
105
  - README.md
94
- - Rakefile
95
- - bin/console
96
- - bin/rake
97
- - bin/setup
98
- - gql.gemspec
99
106
  - lib/gql.rb
100
107
  - lib/gql/array.rb
101
108
  - lib/gql/boolean.rb
@@ -104,18 +111,17 @@ files:
104
111
  - lib/gql/connection.rb
105
112
  - lib/gql/errors.rb
106
113
  - lib/gql/executor.rb
107
- - lib/gql/field.rb
108
114
  - lib/gql/node.rb
109
115
  - lib/gql/number.rb
110
116
  - lib/gql/object.rb
111
117
  - lib/gql/parser.rb
118
+ - lib/gql/raw.rb
112
119
  - lib/gql/schema/call.rb
113
120
  - lib/gql/schema/field.rb
114
121
  - lib/gql/schema/list.rb
115
- - lib/gql/schema/node.rb
116
122
  - lib/gql/schema/parameter.rb
117
123
  - lib/gql/schema/placeholder.rb
118
- - lib/gql/simple.rb
124
+ - lib/gql/schema/root.rb
119
125
  - lib/gql/string.rb
120
126
  - lib/gql/test_case.rb
121
127
  - lib/gql/tokenizer.rb
data/.gitignore DELETED
@@ -1,10 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- /lib/gql/parser.output
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in gql.gemspec
4
- gemspec
data/Rakefile DELETED
@@ -1,35 +0,0 @@
1
- dir = File.dirname(__FILE__)
2
-
3
- require 'bundler/gem_tasks'
4
- require 'rake/testtask'
5
-
6
- file 'lib/gql/tokenizer.rb' => 'support/tokenizer.rex' do |t|
7
- sh "bundle exec rex #{t.prerequisites.first} --output-file #{t.name}"
8
-
9
- # use custom scan error class
10
- sh "sed --in-place 's/class ScanError/class Unused/' #{t.name}"
11
- sh "sed --in-place 's/ScanError/GQL::Errors::ScanError/' #{t.name}"
12
- end
13
-
14
- file 'lib/gql/parser.rb' => 'support/parser.racc' do |t|
15
- if ENV['DEBUG']
16
- sh "bundle exec racc --debug --verbose --output-file=#{t.name} #{t.prerequisites.first}"
17
- else
18
- sh "bundle exec racc --output-file=#{t.name} #{t.prerequisites.first}"
19
- end
20
-
21
- # fix indentation of generated parser code to silence test warning
22
- sh "sed --in-place 's/ end\s*# module/end #/g' #{t.name}"
23
- end
24
-
25
- Rake::TestTask.new :test do |t|
26
- t.libs << 'test'
27
- t.test_files = Dir.glob("#{dir}/test/cases/**/*_test.rb")
28
- # t.warning = true
29
- # t.verbose = true
30
- end
31
-
32
- task :compile => ['lib/gql/tokenizer.rb', 'lib/gql/parser.rb']
33
- task :test => :compile
34
- task :release => :test
35
- task :default => :test
data/bin/console DELETED
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'bundler/setup'
4
- require 'gql'
5
-
6
- require_relative '../test/example'
7
-
8
- def ctxt
9
- @ctxt ||= { auth_token: 'ma' }
10
- end
11
-
12
- def q(string, context = ctxt)
13
- GQL.execute string, context
14
- end
15
-
16
- def p(string)
17
- GQL.parse string
18
- end
19
-
20
- def t(string, &block)
21
- GQL.tokenize string, &block
22
- end
23
-
24
- require 'irb'
25
- IRB.start
data/bin/rake DELETED
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # This file was generated by Bundler.
4
- #
5
- # The application 'rake' is installed as part of a gem, and
6
- # this file is here to facilitate running it.
7
- #
8
-
9
- require 'pathname'
10
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
- Pathname.new(__FILE__).realpath)
12
-
13
- require 'rubygems'
14
- require 'bundler/setup'
15
-
16
- load Gem.bin_path('rake', 'rake')
data/bin/setup DELETED
@@ -1,5 +0,0 @@
1
- #!/bin/bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
-
5
- bundle install
data/gql.gemspec DELETED
@@ -1,29 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
-
5
- require 'gql/version'
6
-
7
- Gem::Specification.new do |spec|
8
- spec.name = 'gql'
9
- spec.version = GQL::VERSION
10
- spec.authors = ['Martin Andert']
11
- spec.email = ['mandert@gmail.com']
12
-
13
- spec.summary = 'A Ruby implementation of Facebook\'s yet-to-be-released GraphQL specification.'
14
- spec.homepage = 'https://github.com/martinandert/gql'
15
- spec.license = 'MIT'
16
-
17
- spec.required_ruby_version = '>= 2.2.0'
18
-
19
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|support)/}) }
20
- spec.bindir = 'exe'
21
- spec.require_paths = ['lib']
22
-
23
- spec.add_development_dependency 'bundler', '~> 1.8'
24
- spec.add_development_dependency 'rake', '~> 10.0'
25
- spec.add_development_dependency 'rexical', '~> 1.0'
26
- spec.add_development_dependency 'racc', '~> 1.4'
27
-
28
- spec.add_dependency 'activesupport', '~> 4.2'
29
- end
data/lib/gql/field.rb DELETED
@@ -1,16 +0,0 @@
1
- require 'active_support/core_ext/class/attribute'
2
-
3
- module GQL
4
- class Field < Node
5
- class_attribute :id, :proc, instance_accessor: false, instance_predicate: false
6
-
7
- class << self
8
- def build_class(id, proc, options = {})
9
- Class.new(self).tap do |field_class|
10
- field_class.id = id.to_s
11
- field_class.proc = proc
12
- end
13
- end
14
- end
15
- end
16
- end