hal_presenter 0.4.3 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|