graphlyte 0.2.2 → 0.2.3
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/graphlyte/arguments/set.rb +9 -5
- data/lib/graphlyte/arguments/value.rb +3 -9
- data/lib/graphlyte/query.rb +10 -4
- data/lib/graphlyte/schema/parser.rb +10 -9
- data/lib/graphlyte/schema/types/base.rb +39 -1
- 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: 4993b6b7dba33932ac40eff10ac57644a120ee41d23df9408d70ea3c5fe12aec
|
4
|
+
data.tar.gz: f7fba13051b20ad335936347753ec3507b113852bcbdd4c5ad62ac3b127496ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3bab812cb94fd2abeb816180683297c4c95f1486368a5f3029a9917fcf4dcf505d8b6c82777ef4574f550fdc8cd6f0878a92bebcbeb09702b3d832f664e4a0fa
|
7
|
+
data.tar.gz: cbbfbbff19e0f789d09b01e8581ded8892601b85710b9c9a84ffcc9e393c1ef69aa27c094deb2a81a23078614982519d6ee0f8047ff63d3f1991fddab764a39f
|
@@ -42,7 +42,15 @@ module Graphlyte
|
|
42
42
|
|
43
43
|
def to_s(inner = false)
|
44
44
|
return "" unless values && !values.empty?
|
45
|
-
arr =
|
45
|
+
arr = stringify_arguments
|
46
|
+
return arr.join(", ") if inner
|
47
|
+
"(#{arr.join(", ")})"
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def stringify_arguments
|
53
|
+
values.map do |k,v|
|
46
54
|
if v.is_a?(Array)
|
47
55
|
"#{k.to_s.to_camel_case}: [#{v.map(&:to_s).join(", ")}]"
|
48
56
|
elsif v.is_a?(Set)
|
@@ -51,12 +59,8 @@ module Graphlyte
|
|
51
59
|
"#{k.to_s.to_camel_case}: #{v.to_s}"
|
52
60
|
end
|
53
61
|
end
|
54
|
-
return arr.join(", ") if inner
|
55
|
-
"(#{arr.join(", ")})"
|
56
62
|
end
|
57
63
|
|
58
|
-
private
|
59
|
-
|
60
64
|
def expand_arguments(data)
|
61
65
|
data.inject({}) do |memo, (k, v)|
|
62
66
|
if v.is_a?(Array)
|
@@ -4,17 +4,11 @@ module Graphlyte
|
|
4
4
|
class Value
|
5
5
|
using Refinements::StringRefinement
|
6
6
|
|
7
|
-
attr_reader :value
|
7
|
+
attr_reader :value
|
8
8
|
|
9
|
-
def initialize(value
|
9
|
+
def initialize(value)
|
10
10
|
raise ArgumentError, "Hash not allowed in this context" if value.is_a? Hash
|
11
|
-
|
12
|
-
@value = value.value
|
13
|
-
@default = value.default
|
14
|
-
else
|
15
|
-
@value = value
|
16
|
-
@default = default
|
17
|
-
end
|
11
|
+
@value = value
|
18
12
|
end
|
19
13
|
|
20
14
|
def symbol?
|
data/lib/graphlyte/query.rb
CHANGED
@@ -19,8 +19,9 @@ module Graphlyte
|
|
19
19
|
str = ":#{value.value.placeholder} of #{value.value.name}"
|
20
20
|
end
|
21
21
|
|
22
|
-
if value.default
|
23
|
-
str += " with default
|
22
|
+
if value.value.default
|
23
|
+
str += " with default "
|
24
|
+
value.value.default.merge!(str)
|
24
25
|
end
|
25
26
|
str
|
26
27
|
end.join("\n")
|
@@ -33,7 +34,12 @@ module Graphlyte
|
|
33
34
|
str = "#{type} #{query_name}"
|
34
35
|
unless types.empty?
|
35
36
|
type_new = types.map do |type_arr|
|
36
|
-
"$#{type_arr[0].to_camel_case}: #{type_arr[1]}"
|
37
|
+
type_str = "$#{type_arr[0].to_camel_case}: #{type_arr[1]}"
|
38
|
+
unless type_arr[2].nil?
|
39
|
+
type_str << " = "
|
40
|
+
type_arr[2].merge!(type_str)
|
41
|
+
end
|
42
|
+
type_str
|
37
43
|
end
|
38
44
|
str += "(#{type_new.join(", ")})"
|
39
45
|
end
|
@@ -59,7 +65,7 @@ module Graphlyte
|
|
59
65
|
memo << "[#{merge_variable_types(var.value, hargs).first}]"
|
60
66
|
end
|
61
67
|
else
|
62
|
-
memo << [var.value.placeholder, var.value.name]
|
68
|
+
memo << [var.value.placeholder, var.value.name, var.value.default]
|
63
69
|
end
|
64
70
|
memo
|
65
71
|
end
|
@@ -63,11 +63,7 @@ module Graphlyte
|
|
63
63
|
defaults = parse_default
|
64
64
|
key = token[0][1]
|
65
65
|
hash = {}
|
66
|
-
|
67
|
-
hash[key] = value
|
68
|
-
else
|
69
|
-
hash[key] = Graphlyte::Arguments::Value.new(value, defaults)
|
70
|
-
end
|
66
|
+
hash[key] = value
|
71
67
|
hash
|
72
68
|
elsif (token = expect(:SPECIAL_ARG_KEY)) && (value = parse_value)
|
73
69
|
defaults = parse_default
|
@@ -76,7 +72,8 @@ module Graphlyte
|
|
76
72
|
if [Array, Hash].include?(value.class)
|
77
73
|
arg[token[0][1]] = value
|
78
74
|
else
|
79
|
-
|
75
|
+
new_val = Schema::Types::Base.new(value, token[0][1], defaults)
|
76
|
+
arg[token[0][1]] = new_val
|
80
77
|
end
|
81
78
|
@special_args.merge!(arg)
|
82
79
|
arg
|
@@ -89,8 +86,7 @@ module Graphlyte
|
|
89
86
|
elsif token = expect(:SPECIAL_ARG_REF)
|
90
87
|
ref = token[0][1]
|
91
88
|
raise "Can't find ref $#{ref}" unless @special_args[ref]
|
92
|
-
|
93
|
-
Arguments::Value.new(Graphlyte::TYPES.send(value.value, ref.to_sym), value.default)
|
89
|
+
@special_args[ref]
|
94
90
|
elsif token = expect(:SPECIAL_ARG_VAL)
|
95
91
|
token[0][1]
|
96
92
|
elsif token = expect(:ARG_HASH_START)
|
@@ -108,10 +104,15 @@ module Graphlyte
|
|
108
104
|
|
109
105
|
def parse_arg_hash
|
110
106
|
if (key = expect(:ARG_KEY)) && (value = parse_value)
|
111
|
-
need(:ARG_HASH_END)
|
112
107
|
hash = {}
|
113
108
|
hash[key[0][1]] = value
|
114
109
|
hash
|
110
|
+
if new_hash = parse_arg_hash
|
111
|
+
hash.merge!(new_hash)
|
112
|
+
else
|
113
|
+
need(:ARG_HASH_END)
|
114
|
+
hash
|
115
|
+
end
|
115
116
|
end
|
116
117
|
end
|
117
118
|
|
@@ -1,12 +1,50 @@
|
|
1
1
|
module Graphlyte
|
2
2
|
module Schema
|
3
3
|
module Types
|
4
|
+
class Defaults
|
5
|
+
attr_reader :value
|
6
|
+
def initialize(value)
|
7
|
+
@value = value
|
8
|
+
end
|
9
|
+
|
10
|
+
def merge!(str)
|
11
|
+
parse_value(@value, str)
|
12
|
+
end
|
13
|
+
|
14
|
+
def parse_value(value, str)
|
15
|
+
if value.is_a?(Hash)
|
16
|
+
str << "{ "
|
17
|
+
value.each_with_index do |(k, v), idx|
|
18
|
+
str << "#{k}: "
|
19
|
+
parse_value(v, str)
|
20
|
+
str << ", " if idx < (value.size - 1)
|
21
|
+
end
|
22
|
+
str << " }"
|
23
|
+
elsif value.is_a?(Array)
|
24
|
+
str << "["
|
25
|
+
value.each_with_index do |item, idx|
|
26
|
+
parse_value(item, str)
|
27
|
+
str << ", " if idx < (value.size - 1)
|
28
|
+
end
|
29
|
+
str << "]"
|
30
|
+
else
|
31
|
+
str << "#{Arguments::Value.new(value).to_s}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
4
36
|
class Base
|
5
37
|
attr_reader :name, :placeholder
|
6
38
|
|
7
|
-
def initialize(name, placeholder)
|
39
|
+
def initialize(name, placeholder, defaults=nil)
|
8
40
|
@name = name
|
9
41
|
@placeholder = placeholder
|
42
|
+
@defaults = defaults
|
43
|
+
end
|
44
|
+
|
45
|
+
def default
|
46
|
+
return nil if @defaults.class == NilClass
|
47
|
+
Defaults.new(@defaults)
|
10
48
|
end
|
11
49
|
end
|
12
50
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphlyte
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Gregory
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|