gql 0.0.9 → 0.0.10
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/gql.rb +39 -39
- data/lib/gql/array.rb +10 -3
- data/lib/gql/call.rb +11 -2
- data/lib/gql/config.rb +9 -2
- data/lib/gql/connection.rb +4 -11
- data/lib/gql/node.rb +3 -2
- data/lib/gql/object.rb +2 -13
- data/lib/gql/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a62133987b6e3870e58eae49d16b0e9b7c71520d
|
4
|
+
data.tar.gz: d13a2cf25e549aa1ae11e5e0d4f0b5de924698f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d099ea7a0be26f2df9f0006224c9f92f3e958abcfd80104b1a4f332763cee38b5fd39549f125b68d5a3331f33a81e6975db3d0bcf1b3f546341d44b72eb124a5
|
7
|
+
data.tar.gz: 40936dedec0db03b6da4a80f80bd8329d66187a43c04628cd6a7f02591c456c1ac8e2de656d7651f897c2258e00402b2547be210efefffb095c5c8b58027f95a
|
data/lib/gql.rb
CHANGED
@@ -1,39 +1,48 @@
|
|
1
|
+
require 'active_support/dependencies/autoload'
|
2
|
+
require 'gql/version'
|
3
|
+
|
1
4
|
module GQL
|
2
|
-
|
3
|
-
|
4
|
-
autoload :
|
5
|
-
autoload :
|
6
|
-
autoload :
|
7
|
-
autoload :
|
8
|
-
autoload :
|
9
|
-
autoload :
|
10
|
-
autoload :
|
11
|
-
autoload :
|
12
|
-
autoload :
|
13
|
-
autoload :
|
14
|
-
autoload :
|
15
|
-
autoload :
|
16
|
-
autoload :
|
17
|
-
autoload :
|
5
|
+
extend ActiveSupport::Autoload
|
6
|
+
|
7
|
+
autoload :Array
|
8
|
+
autoload :Boolean
|
9
|
+
autoload :Call
|
10
|
+
autoload :Config
|
11
|
+
autoload :Connection
|
12
|
+
autoload :Error, 'gql/errors'
|
13
|
+
autoload :Executor
|
14
|
+
autoload :Node
|
15
|
+
autoload :Number
|
16
|
+
autoload :Object
|
17
|
+
autoload :Parser
|
18
|
+
autoload :Raw
|
19
|
+
autoload :String
|
20
|
+
autoload :TestCase
|
18
21
|
|
19
22
|
module Errors
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
extend ActiveSupport::Autoload
|
24
|
+
|
25
|
+
autoload_at 'gql/errors' do
|
26
|
+
autoload :InvalidNodeClass
|
27
|
+
autoload :ScanError
|
28
|
+
autoload :SyntaxError
|
29
|
+
autoload :UndefinedCall
|
30
|
+
autoload :UndefinedField
|
31
|
+
autoload :UndefinedNodeClass
|
32
|
+
autoload :UndefinedRoot
|
33
|
+
autoload :UndefinedFieldType
|
34
|
+
end
|
28
35
|
end
|
29
36
|
|
30
37
|
module Schema
|
31
|
-
|
32
|
-
|
33
|
-
autoload :
|
34
|
-
autoload :
|
35
|
-
autoload :
|
36
|
-
autoload :
|
38
|
+
extend ActiveSupport::Autoload
|
39
|
+
|
40
|
+
autoload :Call
|
41
|
+
autoload :Field
|
42
|
+
autoload :List
|
43
|
+
autoload :Parameter
|
44
|
+
autoload :Placeholder
|
45
|
+
autoload :Root
|
37
46
|
end
|
38
47
|
|
39
48
|
extend(Module.new {
|
@@ -75,13 +84,4 @@ module GQL
|
|
75
84
|
end
|
76
85
|
end
|
77
86
|
})
|
78
|
-
|
79
|
-
self.field_types.update(
|
80
|
-
array: Array,
|
81
|
-
boolean: Boolean,
|
82
|
-
connection: Connection,
|
83
|
-
number: Number,
|
84
|
-
object: Object,
|
85
|
-
string: String
|
86
|
-
)
|
87
87
|
end
|
data/lib/gql/array.rb
CHANGED
@@ -6,9 +6,16 @@ module GQL
|
|
6
6
|
|
7
7
|
class << self
|
8
8
|
def build_class(id, proc, options = {})
|
9
|
-
item_class = options
|
9
|
+
item_class = options.delete(:item_class) || self.item_class
|
10
10
|
|
11
|
-
|
11
|
+
if item_class.is_a?(Hash)
|
12
|
+
item_class.values.each do |klass|
|
13
|
+
Node.validate_is_subclass! klass, 'item'
|
14
|
+
end
|
15
|
+
else
|
16
|
+
Node.validate_is_subclass! item_class, 'item'
|
17
|
+
item_class = Hash.new(item_class)
|
18
|
+
end
|
12
19
|
|
13
20
|
Class.new(self).tap do |field_class|
|
14
21
|
field_class.id = id.to_s
|
@@ -20,7 +27,7 @@ module GQL
|
|
20
27
|
|
21
28
|
def value
|
22
29
|
target.map do |item|
|
23
|
-
node = self.class.item_class.new(ast_node, item, variables, context)
|
30
|
+
node = self.class.item_class[item.class].new(ast_node, item, variables, context)
|
24
31
|
node.value
|
25
32
|
end
|
26
33
|
end
|
data/lib/gql/call.rb
CHANGED
@@ -5,8 +5,17 @@ module GQL
|
|
5
5
|
class_attribute :id, :result_class, :proc, instance_accessor: false, instance_predicate: false
|
6
6
|
|
7
7
|
class << self
|
8
|
-
def returns(result_class)
|
9
|
-
|
8
|
+
def returns(result_class = nil, &block)
|
9
|
+
if result_class
|
10
|
+
self.result_class = result_class
|
11
|
+
elsif block_given?
|
12
|
+
Class.new(Node).tap do |result_class|
|
13
|
+
result_class.default_proc = -> id { -> { target[id] } }
|
14
|
+
result_class.class_eval(&block)
|
15
|
+
|
16
|
+
returns result_class
|
17
|
+
end
|
18
|
+
end
|
10
19
|
end
|
11
20
|
|
12
21
|
def execute(caller_class, ast_node, target, variables, context)
|
data/lib/gql/config.rb
CHANGED
@@ -17,7 +17,14 @@ module GQL
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def field_types
|
20
|
-
@@field_types ||= {
|
20
|
+
@@field_types ||= {
|
21
|
+
array: Array,
|
22
|
+
boolean: Boolean,
|
23
|
+
connection: Connection,
|
24
|
+
number: Number,
|
25
|
+
object: Object,
|
26
|
+
string: String
|
27
|
+
}
|
21
28
|
end
|
22
29
|
|
23
30
|
def field_types=(value)
|
@@ -25,7 +32,7 @@ module GQL
|
|
25
32
|
end
|
26
33
|
|
27
34
|
def default_list_class
|
28
|
-
@@default_list_class ||=
|
35
|
+
@@default_list_class ||= Node
|
29
36
|
end
|
30
37
|
|
31
38
|
def default_list_class=(value)
|
data/lib/gql/connection.rb
CHANGED
@@ -2,21 +2,14 @@ require 'active_support/core_ext/class/attribute'
|
|
2
2
|
|
3
3
|
module GQL
|
4
4
|
class Connection < Node
|
5
|
-
class_attribute :list_class, instance_accessor: false, instance_predicate: false
|
6
|
-
class_attribute :item_class, instance_accessor: false, instance_predicate: false
|
7
|
-
|
8
5
|
class << self
|
9
6
|
def build_class(id, proc, options = {})
|
10
|
-
list_class = options
|
11
|
-
item_class = options
|
12
|
-
|
13
|
-
Connection.validate_is_subclass! list_class, 'list'
|
14
|
-
Node.validate_is_subclass! item_class, 'item'
|
7
|
+
list_class = options.delete(:list_class) || GQL.default_list_class
|
8
|
+
item_class = options.delete(:item_class)
|
15
9
|
|
16
|
-
|
17
|
-
field_class.id = id.to_s
|
18
|
-
field_class.proc = proc
|
10
|
+
Node.validate_is_subclass! list_class, 'list'
|
19
11
|
|
12
|
+
list_class.build_class(id, proc, options).tap do |field_class|
|
20
13
|
field_class.array :edges, -> { target }, item_class: item_class
|
21
14
|
end
|
22
15
|
end
|
data/lib/gql/node.rb
CHANGED
@@ -17,10 +17,11 @@ module GQL
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
class_attribute :id, :proc, :calls, :fields, instance_accessor: false, instance_predicate: false
|
20
|
+
class_attribute :id, :proc, :calls, :fields, :default_proc, instance_accessor: false, instance_predicate: false
|
21
21
|
|
22
22
|
self.calls = {}
|
23
23
|
self.fields = {}
|
24
|
+
self.default_proc = -> id { -> { target.public_send(id) } }
|
24
25
|
|
25
26
|
class << self
|
26
27
|
def build_class(id, proc, options = {})
|
@@ -82,7 +83,7 @@ module GQL
|
|
82
83
|
|
83
84
|
def field(id, *args)
|
84
85
|
options = args.extract_options!
|
85
|
-
proc = args.shift ||
|
86
|
+
proc = args.shift || instance_exec(id, &default_proc)
|
86
87
|
type = options.delete(:type) || Node
|
87
88
|
|
88
89
|
Node.validate_is_subclass! type, 'type'
|
data/lib/gql/object.rb
CHANGED
@@ -2,25 +2,14 @@ require 'active_support/core_ext/class/attribute'
|
|
2
2
|
|
3
3
|
module GQL
|
4
4
|
class Object < Node
|
5
|
-
class_attribute :node_class, instance_accessor: false, instance_predicate: false
|
6
|
-
|
7
5
|
class << self
|
8
6
|
def build_class(id, proc, options = {})
|
9
|
-
node_class = options
|
7
|
+
node_class = options.delete(:node_class)
|
10
8
|
|
11
9
|
Node.validate_is_subclass! node_class, 'node'
|
12
10
|
|
13
|
-
|
14
|
-
field_class.id = id.to_s
|
15
|
-
field_class.proc = proc
|
16
|
-
field_class.node_class = node_class
|
17
|
-
end
|
11
|
+
node_class.build_class id, proc, options
|
18
12
|
end
|
19
13
|
end
|
20
|
-
|
21
|
-
def value
|
22
|
-
node = self.class.node_class.new(ast_node, target, variables, context)
|
23
|
-
node.value
|
24
|
-
end
|
25
14
|
end
|
26
15
|
end
|
data/lib/gql/version.rb
CHANGED