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 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