graphlyte 0.2.2 → 0.2.3

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: 25e9370260ac88d2a810c879bf663c4965340c6838e8e19b18f19309d81ffec1
4
- data.tar.gz: dc7c5ba7909fb9f4615021e07e819771f66a0d73ba8cc5772928cb896808b2e8
3
+ metadata.gz: 4993b6b7dba33932ac40eff10ac57644a120ee41d23df9408d70ea3c5fe12aec
4
+ data.tar.gz: f7fba13051b20ad335936347753ec3507b113852bcbdd4c5ad62ac3b127496ec
5
5
  SHA512:
6
- metadata.gz: 77b742ef11daf4270c22e9ede3ae848dfb0d81a6ad4717c7a6a75ffa88ecf9f688630aa1348d7b8092d0096314596ccef9a34d95ef87486f2292481795763669
7
- data.tar.gz: 53c19eab7a95e2ee2b4d5f2d9412560035c511c5be12bc8af443cad6f742aea36aa34ffffc5242cc58fe9ab685f0465f1e67344905f5baadd196a4b0552148d2
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 = values.map do |k,v|
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, :default
7
+ attr_reader :value
8
8
 
9
- def initialize(value, default = nil)
9
+ def initialize(value)
10
10
  raise ArgumentError, "Hash not allowed in this context" if value.is_a? Hash
11
- if value.is_a?(Value)
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?
@@ -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 #{value.default.to_s}"
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
- if [Array, Hash].include?(value.class)
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
- arg[token[0][1]] = Graphlyte::Arguments::Value.new(value, defaults)
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
- value = @special_args[ref]
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.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-21 00:00:00.000000000 Z
11
+ date: 2021-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec