params-registry 0.1.4 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/params/registry/instance.rb +26 -7
- data/lib/params/registry/version.rb +1 -1
- data/lib/params/registry.rb +13 -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: a2c64c0a41224198bdd02db7960b2051e74726bf690ddc66b222bc077bdeafd0
|
4
|
+
data.tar.gz: 5bd14e8bb789ea29ebca723e13edd08a51174b37aaa15fdec7829041025d471f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f66092cfb1c2c047d6da054b295fa6dfd7796c9f01fe7543d9bfe680e5a57f0602fe48ae6f3733a8e65ea24fa29ad21ade20d18b90259a9784008f4e0876d7d
|
7
|
+
data.tar.gz: e9a801b3893c7eb6a99eada97974750a1f78dd6a084202b0d7545b7464486770e062a4b138cf5466a242cf32f84a38990bc423261ea80ecf61e9e112b3858750
|
@@ -63,15 +63,21 @@ class Params::Registry::Instance
|
|
63
63
|
# resembles the output of `URI.decode_www_form`.
|
64
64
|
#
|
65
65
|
def initialize registry, struct, defaults: false, force: false
|
66
|
-
|
67
|
-
|
66
|
+
if registry.is_a? Params::Registry::Group
|
67
|
+
@group = registry
|
68
|
+
@registry = registry.registry
|
69
|
+
else
|
70
|
+
@group = nil
|
71
|
+
@registry = registry
|
72
|
+
end
|
73
|
+
|
68
74
|
@content = {}
|
69
75
|
@extra = {}
|
70
76
|
|
71
77
|
# canonicalize the keys of the struct
|
72
|
-
struct = struct.reduce({}) do |hash, pair|
|
78
|
+
struct = Types::Input[struct].reduce({}) do |hash, pair|
|
73
79
|
key, value = pair
|
74
|
-
if t = registry
|
80
|
+
if t = registry[@group][key]
|
75
81
|
hash[t.id] = value
|
76
82
|
else
|
77
83
|
extra[key] = value
|
@@ -92,7 +98,7 @@ class Params::Registry::Instance
|
|
92
98
|
# warn complements.class
|
93
99
|
|
94
100
|
# now we get the ranked templates and pass them through
|
95
|
-
registry.
|
101
|
+
registry[@group].ranked.each do |templates|
|
96
102
|
# give me the intersection of templates
|
97
103
|
templates.values.each do |t|
|
98
104
|
|
@@ -166,11 +172,24 @@ class Params::Registry::Instance
|
|
166
172
|
|
167
173
|
# Taxidermy this object as an ordinary hash.
|
168
174
|
#
|
175
|
+
# @param slugs [true, false] whether to use slugs versus canonical keys.
|
176
|
+
# @param extra [false, true] whether to include the "extra" parameters.
|
177
|
+
#
|
169
178
|
# @return [Hash] basically the same thing, minus its metadata.
|
170
179
|
#
|
171
|
-
def to_h
|
180
|
+
def to_h slugs: true, extra: false
|
181
|
+
# we're gonna do damage, lol
|
182
|
+
out = @content.dup
|
183
|
+
|
184
|
+
# this should work?
|
185
|
+
out.transform_keys! do |k|
|
186
|
+
registry[@group][k].slug || k.to_s.to_sym
|
187
|
+
end if slugs
|
188
|
+
|
172
189
|
# XXX maybe enforce the ordering better??
|
173
|
-
|
190
|
+
out.merge! @extra if extra
|
191
|
+
|
192
|
+
out
|
174
193
|
end
|
175
194
|
|
176
195
|
# Retrieve an {Params::Registry::Instance} that isolates the
|
data/lib/params/registry.rb
CHANGED
@@ -89,7 +89,7 @@ class Params::Registry
|
|
89
89
|
template = registry.template_class.new registry, id, **spec
|
90
90
|
end
|
91
91
|
|
92
|
-
#
|
92
|
+
# make sure we aren't calling ourselves
|
93
93
|
registry.templates[id] = template unless registry.templates.equal? self
|
94
94
|
|
95
95
|
# okay now actually assign
|
@@ -209,6 +209,18 @@ class Params::Registry
|
|
209
209
|
"#<#{self.class}: #{id} {#{keys.join ', '}}>"
|
210
210
|
end
|
211
211
|
|
212
|
+
# Process the parameters and return a {Params::Registry::Instance}.
|
213
|
+
#
|
214
|
+
# @param params
|
215
|
+
# [String, URI, Hash{#to_sym => Array}, Array<Array<(#to_sym, Object)>>]
|
216
|
+
# the parameter set, in a dizzying variety of inputs.
|
217
|
+
#
|
218
|
+
# @return [Params::Registry::Instance] the instance.
|
219
|
+
#
|
220
|
+
def process params
|
221
|
+
registry.instance_class.new self, Types::Input[params]
|
222
|
+
end
|
223
|
+
|
212
224
|
end
|
213
225
|
|
214
226
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: params-registry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dorian Taylor
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-02-
|
11
|
+
date: 2024-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-types
|