hal_presenter 1.4.0 → 1.7.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 +0 -0
- data/lib/hal_presenter/attributes.rb +3 -3
- data/lib/hal_presenter/deserializer.rb +5 -6
- data/lib/hal_presenter/embedded.rb +4 -4
- data/lib/hal_presenter/links.rb +28 -22
- data/lib/hal_presenter/model.rb +24 -24
- data/lib/hal_presenter/pagination.rb +1 -4
- data/lib/hal_presenter/policy/dsl.rb +13 -54
- data/lib/hal_presenter/policy/rules.rb +87 -0
- data/lib/hal_presenter/profile.rb +1 -1
- data/lib/hal_presenter/property.rb +10 -2
- data/lib/hal_presenter/serializer.rb +39 -23
- data.tar.gz.sig +0 -0
- metadata +48 -48
- metadata.gz.sig +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d44a7bd34475ea7e7187811e8e3d4447430835e6327440a714315477b8307f2
|
4
|
+
data.tar.gz: fa9bede97a583685589e2cea815be591bbb90c45034baf4697717fb06adc5f2d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df06bf35cd4e145679e0cf40b48d6823e8caa6b72954e1cdf3383797d6925045010ac993aceca7ef29affac6a1b46468ef2c444be6da0a3a60ddae0df2b56b72
|
7
|
+
data.tar.gz: dfdf0f1603bffe9be19f803d18a6e31d83ba9ac0bcf5bdbf566760f29afec09945da2c86f33b4f676afa7ac5b0c6cf9ea63492f3a4146361c6dc32b7fa9de161
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -5,10 +5,10 @@ module HALPresenter
|
|
5
5
|
module Attributes
|
6
6
|
include SuperInit
|
7
7
|
|
8
|
-
def attribute(
|
8
|
+
def attribute(name, value = Property::NO_VALUE, **kwargs, &block)
|
9
9
|
kwargs[:context] ||= self
|
10
|
-
attributes.delete_if { |attr| attr.name ==
|
11
|
-
Property.new(
|
10
|
+
attributes.delete_if { |attr| attr.name == name }
|
11
|
+
Property.new(name, value, **kwargs, &block).tap do |attr|
|
12
12
|
attributes << attr
|
13
13
|
end
|
14
14
|
end
|
@@ -1,13 +1,12 @@
|
|
1
1
|
require 'json'
|
2
2
|
|
3
3
|
module HALPresenter
|
4
|
-
module ClassMethods
|
5
|
-
def from_hal(presenter, payload, resource = nil)
|
6
|
-
presenter.from_hal(payload, resource)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
4
|
module Deserializer
|
5
|
+
module ClassMethods
|
6
|
+
def from_hal(presenter, payload, resource = nil)
|
7
|
+
presenter.from_hal(payload, resource)
|
8
|
+
end
|
9
|
+
end
|
11
10
|
|
12
11
|
class Error < StandardError; end
|
13
12
|
|
@@ -8,16 +8,16 @@ module HALPresenter
|
|
8
8
|
class Embed < HALPresenter::Property
|
9
9
|
attr_reader :presenter_class
|
10
10
|
|
11
|
-
def initialize(name, value =
|
11
|
+
def initialize(name, value = NO_VALUE, **kwargs, &block)
|
12
12
|
@presenter_class = kwargs.delete(:presenter_class)
|
13
13
|
super(name, value, **kwargs, &block)
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
def embed(
|
17
|
+
def embed(name, value = Property::NO_VALUE, **kwargs, &block)
|
18
18
|
kwargs[:context] ||= self
|
19
|
-
embedded.delete_if { |embed| embed.name ==
|
20
|
-
Embed.new(
|
19
|
+
embedded.delete_if { |embed| embed.name == name }
|
20
|
+
Embed.new(name, value, **kwargs, &block).tap do |embed|
|
21
21
|
embedded << embed
|
22
22
|
end
|
23
23
|
end
|
data/lib/hal_presenter/links.rb
CHANGED
@@ -2,21 +2,20 @@ require 'hal_presenter/property'
|
|
2
2
|
require 'hal_presenter/super_init'
|
3
3
|
|
4
4
|
module HALPresenter
|
5
|
+
module Links
|
6
|
+
include SuperInit
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
module ClassMethods
|
9
|
+
def base_href=(base)
|
10
|
+
@base_href = base&.sub(%r(/*$), '')
|
11
|
+
end
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
def href(href)
|
14
|
+
return href if (@base_href ||= '').empty?
|
15
|
+
return href if href =~ %r(\A(\w+://)?[^/])
|
16
|
+
@base_href + href
|
17
|
+
end
|
15
18
|
end
|
16
|
-
end
|
17
|
-
|
18
|
-
module Links
|
19
|
-
include SuperInit
|
20
19
|
|
21
20
|
class Link < HALPresenter::Property
|
22
21
|
attr_reader :type, :deprecation, :profile, :title
|
@@ -24,11 +23,12 @@ module HALPresenter
|
|
24
23
|
|
25
24
|
alias rel name
|
26
25
|
|
27
|
-
def initialize(rel, value =
|
26
|
+
def initialize(rel, value = NO_VALUE, **kwargs, &block)
|
28
27
|
@type = kwargs[:type].freeze
|
29
28
|
@deprecation = kwargs[:deprecation].freeze
|
30
29
|
@profile = kwargs[:profile].freeze
|
31
30
|
@title = kwargs[:title].freeze
|
31
|
+
@templated = kwargs[:templated].freeze
|
32
32
|
|
33
33
|
curie = kwargs[:curie].to_s
|
34
34
|
rel = [curie, rel.to_s].join(':') unless curie.empty?
|
@@ -46,15 +46,16 @@ module HALPresenter
|
|
46
46
|
href = value(resource, options)
|
47
47
|
return {} unless href
|
48
48
|
|
49
|
-
|
50
|
-
|
51
|
-
h[:deprecation] = deprecation if deprecation
|
52
|
-
h[:profile] = profile if profile
|
53
|
-
h[:title] = title if title
|
54
|
-
h[:templated] = templated if templated
|
55
|
-
end
|
49
|
+
values = href.respond_to?(:to_h) ? href.to_h : {}
|
50
|
+
values[:href] = HALPresenter.href(values[:href] || href)
|
56
51
|
|
57
|
-
{
|
52
|
+
{
|
53
|
+
type: type,
|
54
|
+
deprecation: deprecation,
|
55
|
+
profile: profile,
|
56
|
+
title: title,
|
57
|
+
templated: templated
|
58
|
+
}.compact.merge(values)
|
58
59
|
end
|
59
60
|
end
|
60
61
|
|
@@ -68,7 +69,12 @@ module HALPresenter
|
|
68
69
|
end
|
69
70
|
|
70
71
|
kwargs[:context] ||= self
|
71
|
-
|
72
|
+
rel = rel.to_sym
|
73
|
+
|
74
|
+
if rel == :self || kwargs[:replace_parent]
|
75
|
+
links.delete_if { |link| link.rel == rel }
|
76
|
+
end
|
77
|
+
|
72
78
|
Link.new(rel, value, **kwargs, &block).tap do |link|
|
73
79
|
links << link
|
74
80
|
end
|
data/lib/hal_presenter/model.rb
CHANGED
@@ -1,36 +1,36 @@
|
|
1
1
|
module HALPresenter
|
2
2
|
@presenters = {}
|
3
3
|
|
4
|
-
module
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
module Model
|
5
|
+
module ClassMethods
|
6
|
+
def register(model:, presenter:)
|
7
|
+
return unless presenter && model
|
8
|
+
@presenters[presenter] = model
|
9
|
+
end
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
|
11
|
+
def unregister(presenter)
|
12
|
+
@presenters.delete_if { |d,_| d == presenter }
|
13
|
+
end
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
def lookup_model(presenter)
|
16
|
+
@presenters[presenter]
|
17
|
+
end
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
def lookup_presenter(model)
|
20
|
+
presenters = lookup_presenters(model)
|
21
|
+
return presenters.last unless presenters.empty?
|
22
|
+
lookup_presenters(model.first).last if model.respond_to? :first
|
23
|
+
end
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
def lookup_presenters(model)
|
26
|
+
clazz = model.is_a?(Class) ? model : model.class
|
27
|
+
presenters = @presenters.select { |_d, m| m == clazz }.keys
|
28
|
+
return presenters unless presenters.empty?
|
29
|
+
return [] unless clazz < BasicObject
|
30
|
+
lookup_presenters(clazz.superclass)
|
31
|
+
end
|
30
32
|
end
|
31
|
-
end
|
32
33
|
|
33
|
-
module Model
|
34
34
|
def self.included(base)
|
35
35
|
base.extend ClassMethods
|
36
36
|
end
|
@@ -1,61 +1,13 @@
|
|
1
|
+
require 'hal_presenter/policy/rules'
|
2
|
+
|
1
3
|
module HALPresenter
|
2
4
|
module Policy
|
3
5
|
module DSL
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
def attributes
|
8
|
-
@attributes ||= Hash.new(DEFAULT_PROC)
|
9
|
-
end
|
10
|
-
|
11
|
-
def links
|
12
|
-
@links ||= Hash.new(DEFAULT_PROC)
|
13
|
-
end
|
14
|
-
|
15
|
-
def embedded
|
16
|
-
@embedded ||= Hash.new(DEFAULT_PROC)
|
17
|
-
end
|
18
|
-
|
19
|
-
private :attributes, :links, :embedded
|
20
|
-
|
21
|
-
def defaults(*types, value: false)
|
22
|
-
types.each do |t|
|
23
|
-
send(t).default= Proc.new { value }
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def attribute_rule_for(name)
|
28
|
-
attributes[name]
|
29
|
-
end
|
30
|
-
|
31
|
-
def add_attribute(name, block)
|
32
|
-
attributes[name] = block
|
33
|
-
end
|
34
|
-
|
35
|
-
def link_rule_for(rel)
|
36
|
-
return links[rel] if links.key? rel
|
37
|
-
links[strip_curie(rel)]
|
38
|
-
end
|
39
|
-
|
40
|
-
def add_link(rel, block)
|
41
|
-
links[rel] = block
|
42
|
-
end
|
43
|
-
|
44
|
-
def embed_rule_for(name)
|
45
|
-
return embedded[name] if embedded.key? name
|
46
|
-
embedded[strip_curie(name)]
|
47
|
-
end
|
48
|
-
|
49
|
-
def add_embed(name, block)
|
50
|
-
embedded[name] = block
|
6
|
+
module ClassMethods
|
7
|
+
def inherited(child)
|
8
|
+
child.instance_variable_set(:@rules, rules.dup)
|
51
9
|
end
|
52
10
|
|
53
|
-
def strip_curie(rel)
|
54
|
-
rel.to_s.split(':', 2)[1]&.to_sym
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
module ClassMethods
|
59
11
|
def allow_by_default(*types)
|
60
12
|
rules.defaults(*types, value: true)
|
61
13
|
end
|
@@ -78,6 +30,14 @@ module HALPresenter
|
|
78
30
|
def rules
|
79
31
|
@rules ||= Rules.new
|
80
32
|
end
|
33
|
+
|
34
|
+
def no_transform_rels
|
35
|
+
rules.transform_rels = false
|
36
|
+
end
|
37
|
+
|
38
|
+
def transform_rels(value = true)
|
39
|
+
rules.transform_rels = !!value
|
40
|
+
end
|
81
41
|
end
|
82
42
|
|
83
43
|
def self.included(mod)
|
@@ -135,7 +95,6 @@ module HALPresenter
|
|
135
95
|
def __check(block)
|
136
96
|
!!instance_eval(&block)
|
137
97
|
end
|
138
|
-
|
139
98
|
end
|
140
99
|
end
|
141
100
|
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module HALPresenter
|
2
|
+
module Policy
|
3
|
+
class Rules
|
4
|
+
DEFAULT_PROC = Proc.new { false }
|
5
|
+
|
6
|
+
attr_accessor :transform_rels
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@transform_rels = true
|
10
|
+
end
|
11
|
+
|
12
|
+
def dup
|
13
|
+
super.tap do |copy|
|
14
|
+
copy.instance_variable_set(:@attributes, attributes.dup)
|
15
|
+
copy.instance_variable_set(:@links, links.dup)
|
16
|
+
copy.instance_variable_set(:@embedded, embedded.dup)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def defaults(*types, value: false)
|
21
|
+
types.each do |t|
|
22
|
+
send(t).default= Proc.new { value }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def attribute_rule_for(name)
|
27
|
+
attributes[name]
|
28
|
+
end
|
29
|
+
|
30
|
+
def add_attribute(name, block)
|
31
|
+
attributes[name] = block
|
32
|
+
end
|
33
|
+
|
34
|
+
def link_rule_for(rel)
|
35
|
+
rel = transform(rel)
|
36
|
+
return links[rel] if links.key? rel
|
37
|
+
|
38
|
+
links[strip_curie(rel)]
|
39
|
+
end
|
40
|
+
|
41
|
+
def add_link(rel, block)
|
42
|
+
rel = transform(rel)
|
43
|
+
links[rel] = block
|
44
|
+
end
|
45
|
+
|
46
|
+
def embed_rule_for(name)
|
47
|
+
name = transform(name)
|
48
|
+
return embedded[name] if embedded.key? name
|
49
|
+
|
50
|
+
embedded[strip_curie(name)]
|
51
|
+
end
|
52
|
+
|
53
|
+
def add_embed(name, block)
|
54
|
+
name = transform(name)
|
55
|
+
embedded[name] = block
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def attributes
|
61
|
+
@attributes ||= Hash.new(DEFAULT_PROC)
|
62
|
+
end
|
63
|
+
|
64
|
+
def links
|
65
|
+
@links ||= Hash.new(DEFAULT_PROC)
|
66
|
+
end
|
67
|
+
|
68
|
+
def embedded
|
69
|
+
@embedded ||= Hash.new(DEFAULT_PROC)
|
70
|
+
end
|
71
|
+
|
72
|
+
def strip_curie(rel)
|
73
|
+
rel.to_s.split(':', 2)[1]&.to_sym
|
74
|
+
end
|
75
|
+
|
76
|
+
def transform_rels?
|
77
|
+
@transform_rels
|
78
|
+
end
|
79
|
+
|
80
|
+
def transform(rel)
|
81
|
+
return rel unless transform_rels?
|
82
|
+
|
83
|
+
rel.to_s.tr('-', '_').to_sym
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -4,7 +4,7 @@ module HALPresenter
|
|
4
4
|
module Profile
|
5
5
|
include SuperInit
|
6
6
|
|
7
|
-
def profile(value =
|
7
|
+
def profile(value = Property::NO_VALUE, **kwargs, &block)
|
8
8
|
if value.nil? && !block_given?
|
9
9
|
raise 'profile must be called with non nil value or be given a block'
|
10
10
|
end
|
@@ -2,9 +2,11 @@ require 'hal_presenter/lazy_evaluator'
|
|
2
2
|
|
3
3
|
module HALPresenter
|
4
4
|
class Property
|
5
|
+
NO_VALUE = Object.new.freeze
|
6
|
+
|
5
7
|
attr_reader :name, :embed_depth
|
6
8
|
|
7
|
-
def initialize(name, value =
|
9
|
+
def initialize(name, value = NO_VALUE, **kwargs, &block)
|
8
10
|
@name = name.to_sym
|
9
11
|
@value = value.freeze
|
10
12
|
@embed_depth = kwargs[:embed_depth].freeze
|
@@ -15,10 +17,16 @@ module HALPresenter
|
|
15
17
|
def value(resource = nil, options = {})
|
16
18
|
if @lazy
|
17
19
|
@lazy.evaluate(resource, options)
|
18
|
-
elsif @value
|
20
|
+
elsif @value != NO_VALUE
|
19
21
|
@value
|
20
22
|
elsif resource&.respond_to? name_without_curie
|
21
23
|
resource.public_send(name_without_curie)
|
24
|
+
else
|
25
|
+
raise ArgumentError, <<~ERR
|
26
|
+
Cannot serialize #{name.inspect}.
|
27
|
+
No value given and resource does not respond to #{name_without_curie}. Resource:
|
28
|
+
#{resource.inspect}"
|
29
|
+
ERR
|
22
30
|
end
|
23
31
|
end
|
24
32
|
|
@@ -3,28 +3,29 @@ require 'hal_presenter/pagination'
|
|
3
3
|
require 'hal_presenter/curie_collection'
|
4
4
|
|
5
5
|
module HALPresenter
|
6
|
+
module Serializer
|
7
|
+
module ClassMethods
|
8
|
+
def to_hal(resource, **options)
|
9
|
+
options = options.dup
|
10
|
+
presenter!(resource, **options).to_hal(resource, **options)
|
11
|
+
end
|
6
12
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
presenter = options.delete(:presenter)
|
12
|
-
presenter ||= HALPresenter.lookup_presenter(resource)
|
13
|
-
raise Serializer::Error, "No presenter for #{resource.class}" unless presenter
|
14
|
-
presenter.to_hal(resource, options)
|
15
|
-
end
|
13
|
+
def to_collection(resources, **options)
|
14
|
+
options = options.dup
|
15
|
+
presenter!(resources, **options).to_collection(resources, **options)
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
-
raise Serializer::Error, "resources is nil" if resources.nil?
|
19
|
-
options = options.dup
|
20
|
-
presenter = options.delete(:presenter)
|
21
|
-
presenter ||= HALPresenter.lookup_presenter(resources)
|
22
|
-
raise Serializer::Error, "No presenter for #{resources.first.class}" unless presenter
|
23
|
-
presenter.to_collection(resources, options)
|
24
|
-
end
|
25
|
-
end
|
18
|
+
private
|
26
19
|
|
27
|
-
|
20
|
+
def presenter!(resources, **options)
|
21
|
+
raise Serializer::Error, "resources is nil" if resources.nil?
|
22
|
+
presenter = options.delete(:presenter)
|
23
|
+
presenter ||= HALPresenter.lookup_presenter(resources)
|
24
|
+
raise Serializer::Error, "No presenter for #{resources.first.class}" unless presenter
|
25
|
+
|
26
|
+
presenter
|
27
|
+
end
|
28
|
+
end
|
28
29
|
|
29
30
|
class Error < StandardError; end
|
30
31
|
|
@@ -32,15 +33,17 @@ module HALPresenter
|
|
32
33
|
base.extend(ClassMethods)
|
33
34
|
end
|
34
35
|
|
35
|
-
def to_hal(resource = nil, options
|
36
|
+
def to_hal(resource = nil, **options)
|
36
37
|
options = options.dup
|
37
38
|
options[:_depth] ||= 0
|
38
39
|
hash = to_hash(resource, options)
|
39
40
|
move_curies_to_root! hash
|
41
|
+
return hash if options[:as_hash]
|
42
|
+
|
40
43
|
JSON.generate(hash)
|
41
44
|
end
|
42
45
|
|
43
|
-
def to_collection(resources = [], options
|
46
|
+
def to_collection(resources = [], **options)
|
44
47
|
unless can_serialize_collection?
|
45
48
|
raise Error,
|
46
49
|
"Trying to serialize a collection using #{self} which has no collection info. " \
|
@@ -51,6 +54,8 @@ module HALPresenter
|
|
51
54
|
options[:_depth] ||= 0
|
52
55
|
hash = to_collection_hash(resources, options)
|
53
56
|
move_curies_to_root! hash
|
57
|
+
return hash if options[:as_hash]
|
58
|
+
|
54
59
|
JSON.generate(hash)
|
55
60
|
end
|
56
61
|
|
@@ -68,6 +73,7 @@ module HALPresenter
|
|
68
73
|
end
|
69
74
|
|
70
75
|
def to_collection_hash(resources, options)
|
76
|
+
resources ||= []
|
71
77
|
policy = policy_for(nil, options)
|
72
78
|
properties = collection_properties
|
73
79
|
attributes = properties.attributes
|
@@ -133,9 +139,19 @@ module HALPresenter
|
|
133
139
|
|
134
140
|
def _serialize_links(links, curies, resource, policy, options)
|
135
141
|
serialized = links.each_with_object({}) do |link, hash|
|
142
|
+
rel = link.rel
|
136
143
|
next unless link.nested_depth_ok? options[:_depth]
|
137
|
-
next if policy && !policy.link?(
|
138
|
-
|
144
|
+
next if policy && !policy.link?(rel)
|
145
|
+
|
146
|
+
link_hash = link.to_h(resource, options)
|
147
|
+
next if link_hash.empty?
|
148
|
+
|
149
|
+
if hash.key? rel
|
150
|
+
hash[rel] = [hash[rel]] unless hash[rel].is_a? Array
|
151
|
+
hash[rel] << link_hash
|
152
|
+
else
|
153
|
+
hash.merge!(rel => link_hash)
|
154
|
+
end
|
139
155
|
end
|
140
156
|
curies = _serialize_curies(curies, resource, options)
|
141
157
|
serialized[:curies] = curies if curies.any?
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,115 +1,114 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hal_presenter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sammy Henningsson
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
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
|
-
M40=
|
13
|
+
MIIDVjCCAj6gAwIBAgIBATANBgkqhkiG9w0BAQsFADAqMSgwJgYDVQQDDB9zYW1t
|
14
|
+
eS5oZW5uaW5nc3Nvbi9EQz1oZXkvREM9Y29tMB4XDTIyMDEzMTIwNTQxMloXDTI0
|
15
|
+
MDEzMTIwNTQxMlowKjEoMCYGA1UEAwwfc2FtbXkuaGVubmluZ3Nzb24vREM9aGV5
|
16
|
+
L0RDPWNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK+SDC1mfyhu
|
17
|
+
cJ6Va21rIHUGscEtQrdvyBqxFG1s2TgPMAv4RbqwdJVPa7kjtbCzslADlUE1oru2
|
18
|
+
C+rcJsMtVGX02ukMIPHT1OjTyy0/EMqLqSy3WeRI8APyDSxCVbe+h5BMf3zZnYfd
|
19
|
+
dR6AeG7ln09T1P/tX+9lTMc+I+DW1fUlQgY48CNUayvtJR61svXvXMrhLhi29SQi
|
20
|
+
g1qmH6Zoe22/JgH+m2JksPndY5Ep3gqfDc6Imwu2vGvmGErJD63FB0XQ/wb4WVH4
|
21
|
+
l7sHQSTfKDp8SImCt1xqNgIyjw578ZG2geGLoncuxgDrbQ/UFIJ11lDZd4vLevMh
|
22
|
+
nIxTSJpPr2cCAwEAAaOBhjCBgzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
|
23
|
+
HQ4EFgQUukjj1Cd2ea6IOHDLZe0ymzs2jWkwJAYDVR0RBB0wG4EZc2FtbXkuaGVu
|
24
|
+
bmluZ3Nzb25AaGV5LmNvbTAkBgNVHRIEHTAbgRlzYW1teS5oZW5uaW5nc3NvbkBo
|
25
|
+
ZXkuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQCNUrjx1+L5W9R5O5MF3fnnNIyxOXGa
|
26
|
+
qzqpmXpTd7pHUGvSzVxYM/NIkUHSSPyxLAG+RYMPJHjDOSzhLmOUbgpfOsQ8sqUP
|
27
|
+
plABBC03e/+oDwFwlHefonil+sp/AOT9TYZJQbShjKt3/X+VGzjtujJZwvKgiiP0
|
28
|
+
Ht5Q4dvW1ZqUZgvXdYM1LnCX7I3WjoRyhOwdSlaEz5gnD+KYewHiiByK1Jv2n0PG
|
29
|
+
DVzXaUnsmwP+jQ1PkDa5q8ibBzMd2c6Hmm87UDqPxZtML0bF9SjrpbyLMjwtXaMA
|
30
|
+
WDPp0ajpdUZ9GPHsrVNYXiOfQIqcmlmpYVsH1o7vuneUIcIDMrnMDChh
|
32
31
|
-----END CERTIFICATE-----
|
33
|
-
date:
|
32
|
+
date: 2022-01-31 00:00:00.000000000 Z
|
34
33
|
dependencies:
|
35
34
|
- !ruby/object:Gem::Dependency
|
36
35
|
name: rake
|
37
36
|
requirement: !ruby/object:Gem::Requirement
|
38
37
|
requirements:
|
39
|
-
- - ">="
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '10.0'
|
42
38
|
- - "~>"
|
43
39
|
- !ruby/object:Gem::Version
|
44
40
|
version: '12.0'
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '10.0'
|
45
44
|
type: :development
|
46
45
|
prerelease: false
|
47
46
|
version_requirements: !ruby/object:Gem::Requirement
|
48
47
|
requirements:
|
49
|
-
- - ">="
|
50
|
-
- !ruby/object:Gem::Version
|
51
|
-
version: '10.0'
|
52
48
|
- - "~>"
|
53
49
|
- !ruby/object:Gem::Version
|
54
50
|
version: '12.0'
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '10.0'
|
55
54
|
- !ruby/object:Gem::Dependency
|
56
55
|
name: activesupport
|
57
56
|
requirement: !ruby/object:Gem::Requirement
|
58
57
|
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '4.0'
|
62
58
|
- - "~>"
|
63
59
|
- !ruby/object:Gem::Version
|
64
60
|
version: '5.0'
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '4.0'
|
65
64
|
type: :development
|
66
65
|
prerelease: false
|
67
66
|
version_requirements: !ruby/object:Gem::Requirement
|
68
67
|
requirements:
|
69
|
-
- - ">="
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
version: '4.0'
|
72
68
|
- - "~>"
|
73
69
|
- !ruby/object:Gem::Version
|
74
70
|
version: '5.0'
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '4.0'
|
75
74
|
- !ruby/object:Gem::Dependency
|
76
75
|
name: minitest
|
77
76
|
requirement: !ruby/object:Gem::Requirement
|
78
77
|
requirements:
|
79
|
-
- - ">="
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '5.0'
|
82
78
|
- - "~>"
|
83
79
|
- !ruby/object:Gem::Version
|
84
80
|
version: '5.10'
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '5.0'
|
85
84
|
type: :development
|
86
85
|
prerelease: false
|
87
86
|
version_requirements: !ruby/object:Gem::Requirement
|
88
87
|
requirements:
|
89
|
-
- - ">="
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
version: '5.0'
|
92
88
|
- - "~>"
|
93
89
|
- !ruby/object:Gem::Version
|
94
90
|
version: '5.10'
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '5.0'
|
95
94
|
- !ruby/object:Gem::Dependency
|
96
95
|
name: byebug
|
97
96
|
requirement: !ruby/object:Gem::Requirement
|
98
97
|
requirements:
|
99
|
-
- - "
|
98
|
+
- - "~>"
|
100
99
|
- !ruby/object:Gem::Version
|
101
100
|
version: '9.0'
|
102
|
-
- - "
|
101
|
+
- - ">="
|
103
102
|
- !ruby/object:Gem::Version
|
104
103
|
version: '9.0'
|
105
104
|
type: :development
|
106
105
|
prerelease: false
|
107
106
|
version_requirements: !ruby/object:Gem::Requirement
|
108
107
|
requirements:
|
109
|
-
- - "
|
108
|
+
- - "~>"
|
110
109
|
- !ruby/object:Gem::Version
|
111
110
|
version: '9.0'
|
112
|
-
- - "
|
111
|
+
- - ">="
|
113
112
|
- !ruby/object:Gem::Version
|
114
113
|
version: '9.0'
|
115
114
|
- !ruby/object:Gem::Dependency
|
@@ -155,7 +154,7 @@ dependencies:
|
|
155
154
|
description: |
|
156
155
|
A DSL for serializing resources according to
|
157
156
|
HypertextApplicationLanguage.
|
158
|
-
email: sammy.henningsson@
|
157
|
+
email: sammy.henningsson@hey.com
|
159
158
|
executables: []
|
160
159
|
extensions: []
|
161
160
|
extra_rdoc_files: []
|
@@ -174,6 +173,7 @@ files:
|
|
174
173
|
- lib/hal_presenter/pagination.rb
|
175
174
|
- lib/hal_presenter/policy.rb
|
176
175
|
- lib/hal_presenter/policy/dsl.rb
|
176
|
+
- lib/hal_presenter/policy/rules.rb
|
177
177
|
- lib/hal_presenter/profile.rb
|
178
178
|
- lib/hal_presenter/property.rb
|
179
179
|
- lib/hal_presenter/serialize_hooks.rb
|
@@ -183,7 +183,7 @@ homepage: https://github.com/sammyhenningsson/hal_presenter
|
|
183
183
|
licenses:
|
184
184
|
- MIT
|
185
185
|
metadata: {}
|
186
|
-
post_install_message:
|
186
|
+
post_install_message:
|
187
187
|
rdoc_options: []
|
188
188
|
require_paths:
|
189
189
|
- lib
|
@@ -198,8 +198,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
198
198
|
- !ruby/object:Gem::Version
|
199
199
|
version: '0'
|
200
200
|
requirements: []
|
201
|
-
rubygems_version: 3.
|
202
|
-
signing_key:
|
201
|
+
rubygems_version: 3.1.6
|
202
|
+
signing_key:
|
203
203
|
specification_version: 4
|
204
204
|
summary: JSON HAL serializer
|
205
205
|
test_files: []
|
metadata.gz.sig
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
Q��OvOyr7q���[a������Y�vV!���5Xq�̯i����9��H�w�F���-uLK����4Dt��F?i]�lG�����OT9��,W�ȵ�
|
2
|
+
����/��5��dԜ�Ot���+���j�c�\���I7Z�L7���4m�� 0�����mb}R��A�-�����"nm4wt)N|Ѯ��8X-��+�ك��W�V�=K-���J�b��8/�H�Dj�@n�����&'�� �F@ڣ
|