hal_presenter 0.4.3 → 0.5.0
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
- checksums.yaml.gz.sig +2 -4
- data/lib/hal_presenter/attributes.rb +2 -2
- data/lib/hal_presenter/collection.rb +7 -7
- data/lib/hal_presenter/curies.rb +2 -2
- data/lib/hal_presenter/deserializer.rb +2 -2
- data/lib/hal_presenter/embedded.rb +5 -5
- data/lib/hal_presenter/links.rb +5 -5
- data/lib/hal_presenter/property.rb +3 -2
- data/lib/hal_presenter/serializer.rb +28 -12
- data/lib/hal_presenter.rb +0 -9
- data.tar.gz.sig +0 -0
- metadata +44 -46
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c2260ced3e580fbed871cd6926b0d4429b8e3db3f79584bdbc5740561ef402f
|
4
|
+
data.tar.gz: f65027a7452a434c21bc266ecd862a2fce7a147a2fd7b73938fc6a577c425946
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7fec5bb05a99d8db7439c8d84adf6803c4253d288dd7777235912a8f08b0de88639bb17e8d7fe53e3d1d78568e102422b5813c2e70e99f4a891ac4a86a296f3e
|
7
|
+
data.tar.gz: e4ce6d2d6ce31a4059b22ac7329dfb38e3324ba7b68c9e84183b5f03d8f5f779bc62114117056b96586f9c8d67c77c30928753c09d219ced9af9125a3987d529
|
checksums.yaml.gz.sig
CHANGED
@@ -1,4 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
����)A)�r�<]���kk1p#���0��H2(4���8��Z0%�� ;����C���F
|
4
|
-
��n�\���^�3���ք�:b�J~F7�D�p���w�Vŏ���N����+Q��FbJ
|
1
|
+
(r��8��Q?YT3H����v�8JG��ޭ"�zU�íӖ=��k�t٪�cI�����XyS5�6m(��V�z&ZޭE#�2����JS�(X����b��{F=w�x��lz_s���`
|
2
|
+
]D�|�U=�xF)�L�1�2��8�g�),Qܳ#!˼ W��<������m�є
|
@@ -2,10 +2,10 @@ require 'hal_presenter/property'
|
|
2
2
|
|
3
3
|
module HALPresenter
|
4
4
|
module Attributes
|
5
|
-
def attribute(*args, &block)
|
5
|
+
def attribute(*args, **kw_args, &block)
|
6
6
|
@_attributes ||= init_attributes
|
7
7
|
@_attributes = @_attributes.reject { |attr| attr.name == args.first }
|
8
|
-
@_attributes << Property.new(*args, &block)
|
8
|
+
@_attributes << Property.new(*args, **kw_args, &block)
|
9
9
|
end
|
10
10
|
|
11
11
|
protected
|
@@ -3,7 +3,7 @@ require 'hal_presenter/property'
|
|
3
3
|
module HALPresenter
|
4
4
|
module Collection
|
5
5
|
|
6
|
-
class
|
6
|
+
class Properties
|
7
7
|
include Attributes
|
8
8
|
include Links
|
9
9
|
include Curies
|
@@ -31,25 +31,25 @@ module HALPresenter
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def collection(of:, &block)
|
34
|
-
@
|
34
|
+
@_collection_properties = Properties.new(of, self, &block)
|
35
35
|
end
|
36
36
|
|
37
37
|
protected
|
38
38
|
|
39
|
-
def
|
40
|
-
@
|
39
|
+
def collection_properties
|
40
|
+
@_collection_properties ||= init_collection_params
|
41
41
|
end
|
42
42
|
|
43
43
|
def can_serialize_collection?
|
44
|
-
!
|
44
|
+
!collection_properties.nil?
|
45
45
|
end
|
46
46
|
|
47
47
|
private
|
48
48
|
|
49
49
|
def init_collection_params
|
50
50
|
return unless Class === self
|
51
|
-
if superclass.respond_to?(:
|
52
|
-
superclass.
|
51
|
+
if superclass.respond_to?(:collection_properties, true)
|
52
|
+
superclass.collection_properties
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
data/lib/hal_presenter/curies.rb
CHANGED
@@ -2,13 +2,13 @@ require 'hal_presenter/property'
|
|
2
2
|
|
3
3
|
module HALPresenter
|
4
4
|
module Curies
|
5
|
-
def curie(rel, value = nil, &block)
|
5
|
+
def curie(rel, value = nil, **kw_args, &block)
|
6
6
|
if value.nil? && !block_given?
|
7
7
|
raise 'curie must be called with non nil value or be given a block'
|
8
8
|
end
|
9
9
|
@_curies ||= init_curies
|
10
10
|
@_curies = @_curies.reject { |curie| curie.name == rel }
|
11
|
-
@_curies << Property.new(rel, value, &block)
|
11
|
+
@_curies << Property.new(rel, value, **kw_args, &block)
|
12
12
|
end
|
13
13
|
|
14
14
|
protected
|
@@ -67,7 +67,7 @@ module HALPresenter
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def deserialize_collection(hash, resource)
|
70
|
-
hash['_embedded'][
|
70
|
+
hash['_embedded'][collection_properties.name].each do |resource_hash|
|
71
71
|
resource << from_hash(resource_hash, nil)
|
72
72
|
end
|
73
73
|
end
|
@@ -75,7 +75,7 @@ module HALPresenter
|
|
75
75
|
private
|
76
76
|
|
77
77
|
def deserialize_as_collection?(hash)
|
78
|
-
name =
|
78
|
+
name = collection_properties&.name
|
79
79
|
# return true/false (Hash#key? returns nil if not found..)
|
80
80
|
name && hash['_embedded']&.key?(name) || false
|
81
81
|
end
|
@@ -5,16 +5,16 @@ module HALPresenter
|
|
5
5
|
class Embed < HALPresenter::Property
|
6
6
|
attr_reader :presenter_class
|
7
7
|
|
8
|
-
def initialize(name, value = nil,
|
9
|
-
|
10
|
-
|
8
|
+
def initialize(name, value = nil, **kw_args, &block)
|
9
|
+
@presenter_class = kw_args.delete(:presenter_class)
|
10
|
+
super(name, value, **kw_args, &block)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
def embed(*args, &block)
|
14
|
+
def embed(*args, **kw_args, &block)
|
15
15
|
@_embedded ||= init_embedded
|
16
16
|
@_embedded = @_embedded.reject { |embed| embed.name == args.first }
|
17
|
-
@_embedded << Embed.new(*args, &block)
|
17
|
+
@_embedded << Embed.new(*args, **kw_args, &block)
|
18
18
|
end
|
19
19
|
|
20
20
|
protected
|
data/lib/hal_presenter/links.rb
CHANGED
@@ -16,12 +16,12 @@ module HALPresenter
|
|
16
16
|
|
17
17
|
class Link < HALPresenter::Property
|
18
18
|
attr_reader :http_method
|
19
|
-
def initialize(rel, value = nil,
|
19
|
+
def initialize(rel, value = nil, **kw_args, &block)
|
20
20
|
if value.nil? && !block_given?
|
21
21
|
raise 'link must be called with non nil value or be given a block'
|
22
22
|
end
|
23
|
-
@http_method =
|
24
|
-
super(rel, value, &block)
|
23
|
+
@http_method = kw_args.delete(:method) || kw_args.delete(:methods)
|
24
|
+
super(rel, value, **kw_args, &block)
|
25
25
|
end
|
26
26
|
|
27
27
|
def rel
|
@@ -29,10 +29,10 @@ module HALPresenter
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
def link(rel, value = nil,
|
32
|
+
def link(rel, value = nil, **kw_args, &block)
|
33
33
|
@_links ||= init_links
|
34
34
|
@_links = @_links.reject { |link| link.rel == rel }
|
35
|
-
@_links << Link.new(rel, value,
|
35
|
+
@_links << Link.new(rel, value, **kw_args, &block)
|
36
36
|
end
|
37
37
|
|
38
38
|
protected
|
@@ -1,12 +1,13 @@
|
|
1
1
|
module HALPresenter
|
2
2
|
class Property
|
3
|
-
attr_reader :name, :resource, :options
|
3
|
+
attr_reader :name, :resource, :embed_depth, :options
|
4
4
|
|
5
5
|
alias :resources :resource
|
6
6
|
|
7
|
-
def initialize(name, value = nil, &block)
|
7
|
+
def initialize(name, value = nil, embed_depth: nil, &block)
|
8
8
|
@name = name
|
9
9
|
@value = value
|
10
|
+
@embed_depth = embed_depth
|
10
11
|
@scope = nil
|
11
12
|
return unless block_given?
|
12
13
|
@scope = eval 'self', block.binding
|
@@ -24,6 +24,7 @@ module HALPresenter
|
|
24
24
|
class Error < StandardError; end
|
25
25
|
|
26
26
|
def to_hal(resource = nil, options = {})
|
27
|
+
options[:_depth] ||= 0
|
27
28
|
hash = to_hash(resource, options)
|
28
29
|
JSON.generate(hash)
|
29
30
|
end
|
@@ -35,6 +36,7 @@ module HALPresenter
|
|
35
36
|
"Add a 'collection' spec to the serializer or use another serializer"
|
36
37
|
end
|
37
38
|
options[:paginate] = HALPresenter.paginate unless options.key? :paginate
|
39
|
+
options[:_depth] ||= 0
|
38
40
|
hash = to_collection_hash(resources, options)
|
39
41
|
JSON.generate(hash)
|
40
42
|
end
|
@@ -42,8 +44,7 @@ module HALPresenter
|
|
42
44
|
protected
|
43
45
|
|
44
46
|
def to_hash(resource, options)
|
45
|
-
policy =
|
46
|
-
|
47
|
+
policy = policy_for(resource, options)
|
47
48
|
{}.tap do |serialized|
|
48
49
|
serialized.merge! serialize_attributes(resource, policy, options)
|
49
50
|
serialized.merge! serialize_links(resource, policy, options)
|
@@ -54,22 +55,24 @@ module HALPresenter
|
|
54
55
|
end
|
55
56
|
|
56
57
|
def to_collection_hash(resources, options)
|
57
|
-
policy =
|
58
|
-
|
59
|
-
|
60
|
-
|
58
|
+
policy = policy_for(nil, options)
|
59
|
+
properties = collection_properties
|
60
|
+
attributes = properties.attributes
|
61
|
+
links = properties.links
|
62
|
+
curies = properties.curies
|
63
|
+
embedded = properties.embedded
|
61
64
|
{}.tap do |serialized|
|
62
|
-
serialized.merge! _serialize_attributes(
|
65
|
+
serialized.merge! _serialize_attributes(attributes, resources, policy, options)
|
63
66
|
serialized.merge! _serialize_links(links, curies, resources, policy, options)
|
64
67
|
Pagination.paginate!(serialized, resources) if options[:paginate]
|
65
68
|
|
66
69
|
# Embedded from collection block
|
67
|
-
embedded = _serialize_embedded(
|
70
|
+
embedded = _serialize_embedded(embedded, resources, policy, options)
|
68
71
|
serialized[:_embedded] = embedded[:_embedded] || {}
|
69
72
|
|
70
73
|
# Embedded resources
|
71
74
|
serialized_resources = resources.map { |resource| to_hash(resource, options) }
|
72
|
-
serialized[:_embedded].merge!({
|
75
|
+
serialized[:_embedded].merge!({properties.name => serialized_resources })
|
73
76
|
end
|
74
77
|
end
|
75
78
|
|
@@ -98,6 +101,7 @@ module HALPresenter
|
|
98
101
|
|
99
102
|
def _serialize_attributes(attributes, resource, policy, options)
|
100
103
|
attributes.each_with_object({}) do |attribute, hash|
|
104
|
+
next unless nested_depth_ok?(attribute, options[:_depth])
|
101
105
|
next if policy && !policy.attribute?(attribute.name)
|
102
106
|
hash[attribute.name] = attribute.value(resource, options)
|
103
107
|
end
|
@@ -105,6 +109,7 @@ module HALPresenter
|
|
105
109
|
|
106
110
|
def _serialize_links(links, curies, resource, policy, options)
|
107
111
|
serialized = links.each_with_object({}) do |link, hash|
|
112
|
+
next unless nested_depth_ok?(link, options[:_depth])
|
108
113
|
next if policy && !policy.link?(link.rel)
|
109
114
|
href = link.value(resource, options) or next
|
110
115
|
hash[link.rel] = { href: HALPresenter.href(href) }.tap do |s|
|
@@ -119,6 +124,7 @@ module HALPresenter
|
|
119
124
|
|
120
125
|
def _serialize_curies(curies, resource, policy, options)
|
121
126
|
curies.each_with_object([]) do |curie, array|
|
127
|
+
next unless nested_depth_ok?(curie, options[:_depth])
|
122
128
|
href = curie.value(resource, options) or next
|
123
129
|
array << {
|
124
130
|
name: curie.name,
|
@@ -130,11 +136,13 @@ module HALPresenter
|
|
130
136
|
|
131
137
|
def _serialize_embedded(embedded, object, policy, options)
|
132
138
|
serialized = embedded.each_with_object({}) do |embed, hash|
|
139
|
+
next unless nested_depth_ok?(embed, options[:_depth])
|
133
140
|
next if policy && !policy.embed?(embed.name)
|
134
141
|
resource = embed.value(object, options) or next
|
135
142
|
presenter = embed.presenter_class
|
143
|
+
options[:_depth] += 1
|
136
144
|
hash[embed.name] =
|
137
|
-
if resource.
|
145
|
+
if resource.is_a? Array
|
138
146
|
_serialize_embedded_collection(resource, presenter, options)
|
139
147
|
else
|
140
148
|
presenter ||= HALPresenter.lookup_presenter(resource).first
|
@@ -152,8 +160,7 @@ module HALPresenter
|
|
152
160
|
raise Serializer::Error,
|
153
161
|
"No presenter specified to handle serializing embedded #{clazz}"
|
154
162
|
end
|
155
|
-
if presenter.
|
156
|
-
presenter.can_serialize_collection?
|
163
|
+
if presenter.can_serialize_collection?
|
157
164
|
presenter.to_collection_hash(resources, options)
|
158
165
|
else
|
159
166
|
resources.map do |resrc|
|
@@ -161,6 +168,15 @@ module HALPresenter
|
|
161
168
|
end
|
162
169
|
end
|
163
170
|
end
|
171
|
+
|
172
|
+
def policy_for(resource, options)
|
173
|
+
policy = policy_class&.new(options[:current_user], resource, options)
|
174
|
+
end
|
175
|
+
|
176
|
+
def nested_depth_ok?(property, level)
|
177
|
+
return true unless embed_depth = property.embed_depth
|
178
|
+
level <= embed_depth
|
179
|
+
end
|
164
180
|
end
|
165
181
|
end
|
166
182
|
|
data/lib/hal_presenter.rb
CHANGED
@@ -22,12 +22,3 @@ module HALPresenter
|
|
22
22
|
include HALPresenter::Deserializer
|
23
23
|
include HALPresenter::Policy
|
24
24
|
end
|
25
|
-
|
26
|
-
# Keeping this module for backward compatibility!
|
27
|
-
module HALDecorator
|
28
|
-
include HALPresenter
|
29
|
-
|
30
|
-
def self.method_missing(m, *args, &block)
|
31
|
-
HALPresenter.send(m, *args, &block)
|
32
|
-
end
|
33
|
-
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hal_presenter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sammy Henningsson
|
@@ -10,107 +10,106 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
H1g6Q+B6qk9O6g==
|
13
|
+
MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFzYW1t
|
14
|
+
eS5oZW5uaW5nc3Nvbi9EQz1nbWFpbC9EQz1jb20wHhcNMTgwNzE2MTYzNTMzWhcN
|
15
|
+
MjAwNzE2MTYzNTMzWjAsMSowKAYDVQQDDCFzYW1teS5oZW5uaW5nc3Nvbi9EQz1n
|
16
|
+
bWFpbC9EQz1jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvkgwt
|
17
|
+
Zn8obnCelWttayB1BrHBLUK3b8gasRRtbNk4DzAL+EW6sHSVT2u5I7Wws7JQA5VB
|
18
|
+
NaK7tgvq3CbDLVRl9NrpDCDx09To08stPxDKi6kst1nkSPAD8g0sQlW3voeQTH98
|
19
|
+
2Z2H3XUegHhu5Z9PU9T/7V/vZUzHPiPg1tX1JUIGOPAjVGsr7SUetbL171zK4S4Y
|
20
|
+
tvUkIoNaph+maHttvyYB/ptiZLD53WORKd4Knw3OiJsLtrxr5hhKyQ+txQdF0P8G
|
21
|
+
+FlR+Je7B0Ek3yg6fEiJgrdcajYCMo8Oe/GRtoHhi6J3LsYA620P1BSCddZQ2XeL
|
22
|
+
y3rzIZyMU0iaT69nAgMBAAGjgYowgYcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
|
23
|
+
HQYDVR0OBBYEFLpI49QndnmuiDhwy2XtMps7No1pMCYGA1UdEQQfMB2BG3NhbW15
|
24
|
+
Lmhlbm5pbmdzc29uQGdtYWlsLmNvbTAmBgNVHRIEHzAdgRtzYW1teS5oZW5uaW5n
|
25
|
+
c3NvbkBnbWFpbC5jb20wDQYJKoZIhvcNAQELBQADggEBAFJZqH6sgeiTLvMLpxaK
|
26
|
+
K1GaYSCyZbMutf5C3tIAgkmU5UD6B8R0bw6gTM1deM5NJ60LjzqY7rlK3YKDIbTn
|
27
|
+
iXMCe9vd4yE/jb5Zi8Wk//9n8CMG68dQpBvmcQ58/M4gTtgsx+lIgXuI5dPQMmRi
|
28
|
+
bhWQqqWqxT9X6njjfXFk4xn3z6mfFQNPAYqRVeTHUpXBQZPt+bYXRwHPFZGWkx4l
|
29
|
+
BnuuhYKt3CR7YIgvnsQWlTAcU1Ipdayj6UfYqUtlc6cF3CL96NOx7mgZXV8URFiX
|
30
|
+
ZMhjYR7sRczGJx+GxGU2EaR0bjRsPVlC4ywtFxoOfRG3WaJcpWGEoAoMJX6Z0bRv
|
31
|
+
M40=
|
33
32
|
-----END CERTIFICATE-----
|
34
|
-
date:
|
33
|
+
date: 2019-01-03 00:00:00.000000000 Z
|
35
34
|
dependencies:
|
36
35
|
- !ruby/object:Gem::Dependency
|
37
36
|
name: rake
|
38
37
|
requirement: !ruby/object:Gem::Requirement
|
39
38
|
requirements:
|
40
|
-
- - "~>"
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: '12.0'
|
43
39
|
- - ">="
|
44
40
|
- !ruby/object:Gem::Version
|
45
41
|
version: '10.0'
|
42
|
+
- - "~>"
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '12.0'
|
46
45
|
type: :development
|
47
46
|
prerelease: false
|
48
47
|
version_requirements: !ruby/object:Gem::Requirement
|
49
48
|
requirements:
|
50
|
-
- - "~>"
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '12.0'
|
53
49
|
- - ">="
|
54
50
|
- !ruby/object:Gem::Version
|
55
51
|
version: '10.0'
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '12.0'
|
56
55
|
- !ruby/object:Gem::Dependency
|
57
56
|
name: activesupport
|
58
57
|
requirement: !ruby/object:Gem::Requirement
|
59
58
|
requirements:
|
60
|
-
- - "~>"
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '5.0'
|
63
59
|
- - ">="
|
64
60
|
- !ruby/object:Gem::Version
|
65
61
|
version: '4.0'
|
62
|
+
- - "~>"
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '5.0'
|
66
65
|
type: :development
|
67
66
|
prerelease: false
|
68
67
|
version_requirements: !ruby/object:Gem::Requirement
|
69
68
|
requirements:
|
70
|
-
- - "~>"
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: '5.0'
|
73
69
|
- - ">="
|
74
70
|
- !ruby/object:Gem::Version
|
75
71
|
version: '4.0'
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '5.0'
|
76
75
|
- !ruby/object:Gem::Dependency
|
77
76
|
name: minitest
|
78
77
|
requirement: !ruby/object:Gem::Requirement
|
79
78
|
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '5.10'
|
83
79
|
- - ">="
|
84
80
|
- !ruby/object:Gem::Version
|
85
81
|
version: '5.0'
|
82
|
+
- - "~>"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '5.10'
|
86
85
|
type: :development
|
87
86
|
prerelease: false
|
88
87
|
version_requirements: !ruby/object:Gem::Requirement
|
89
88
|
requirements:
|
90
|
-
- - "~>"
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
version: '5.10'
|
93
89
|
- - ">="
|
94
90
|
- !ruby/object:Gem::Version
|
95
91
|
version: '5.0'
|
92
|
+
- - "~>"
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '5.10'
|
96
95
|
- !ruby/object:Gem::Dependency
|
97
96
|
name: byebug
|
98
97
|
requirement: !ruby/object:Gem::Requirement
|
99
98
|
requirements:
|
100
|
-
- - "
|
99
|
+
- - ">="
|
101
100
|
- !ruby/object:Gem::Version
|
102
101
|
version: '9.0'
|
103
|
-
- - "
|
102
|
+
- - "~>"
|
104
103
|
- !ruby/object:Gem::Version
|
105
104
|
version: '9.0'
|
106
105
|
type: :development
|
107
106
|
prerelease: false
|
108
107
|
version_requirements: !ruby/object:Gem::Requirement
|
109
108
|
requirements:
|
110
|
-
- - "
|
109
|
+
- - ">="
|
111
110
|
- !ruby/object:Gem::Version
|
112
111
|
version: '9.0'
|
113
|
-
- - "
|
112
|
+
- - "~>"
|
114
113
|
- !ruby/object:Gem::Version
|
115
114
|
version: '9.0'
|
116
115
|
- !ruby/object:Gem::Dependency
|
@@ -194,8 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
193
|
- !ruby/object:Gem::Version
|
195
194
|
version: '0'
|
196
195
|
requirements: []
|
197
|
-
|
198
|
-
rubygems_version: 2.7.3
|
196
|
+
rubygems_version: 3.0.1
|
199
197
|
signing_key:
|
200
198
|
specification_version: 4
|
201
199
|
summary: JSON HAL serializer
|
metadata.gz.sig
CHANGED
Binary file
|