hal_presenter 1.0.0 → 1.1.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 +0 -0
- data.tar.gz.sig +0 -0
- data/lib/hal_presenter.rb +2 -0
- data/lib/hal_presenter/attributes.rb +10 -15
- data/lib/hal_presenter/collection.rb +31 -11
- data/lib/hal_presenter/curies.rb +11 -15
- data/lib/hal_presenter/embedded.rb +13 -18
- data/lib/hal_presenter/lazy_evaluator.rb +7 -7
- data/lib/hal_presenter/links.rb +22 -25
- data/lib/hal_presenter/model.rb +8 -2
- data/lib/hal_presenter/namespace.rb +41 -0
- data/lib/hal_presenter/policy.rb +2 -2
- data/lib/hal_presenter/property.rb +22 -10
- data/lib/hal_presenter/serialize_hooks.rb +2 -2
- data/lib/hal_presenter/serializer.rb +7 -7
- data/lib/hal_presenter/super_init.rb +20 -0
- metadata +4 -2
- 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: e1cae2dc6aea584c397b91fc95c485b1e53602184c51d20760c02c7b0c76ac2f
|
4
|
+
data.tar.gz: 7e0abe48f0337d05bea36e1fe62e2c451d18450b6044f1a5200754cb387e98a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1f9cdfc3286ee107dd3600e7621bc1c1d435bc04c4a181301214d41999a3ea3a142522e692a85c925950cee4e4c6bb6df7449b26f53efd3a24be6ed54fcbac1
|
7
|
+
data.tar.gz: f157c99026624748d91be20cf8fcf99d294a29c11f9d93e90b3ff50419e65e928256698d74c4bb50bcba956ed8e071879b2930eaa1719254c43c808cc392d86d
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/hal_presenter.rb
CHANGED
@@ -9,6 +9,7 @@ require 'hal_presenter/serializer'
|
|
9
9
|
require 'hal_presenter/deserializer'
|
10
10
|
require 'hal_presenter/collection'
|
11
11
|
require 'hal_presenter/serialize_hooks'
|
12
|
+
require 'hal_presenter/namespace'
|
12
13
|
|
13
14
|
module HALPresenter
|
14
15
|
include HALPresenter::Attributes
|
@@ -21,4 +22,5 @@ module HALPresenter
|
|
21
22
|
include HALPresenter::Serializer
|
22
23
|
include HALPresenter::Deserializer
|
23
24
|
include HALPresenter::Policy
|
25
|
+
include HALPresenter::Namespace
|
24
26
|
end
|
@@ -1,27 +1,22 @@
|
|
1
1
|
require 'hal_presenter/property'
|
2
|
+
require 'hal_presenter/super_init'
|
2
3
|
|
3
4
|
module HALPresenter
|
4
5
|
module Attributes
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
include SuperInit
|
7
|
+
|
8
|
+
def attribute(*args, **kwargs, &block)
|
9
|
+
kwargs[:context] ||= self
|
10
|
+
attributes.delete_if { |attr| attr.name == args.first }
|
11
|
+
Property.new(*args, **kwargs, &block).tap do |attr|
|
12
|
+
attributes << attr
|
13
|
+
end
|
9
14
|
end
|
10
15
|
|
11
16
|
protected
|
12
17
|
|
13
18
|
def attributes
|
14
|
-
@
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def __init_attributes
|
20
|
-
return [] unless Class === self
|
21
|
-
return [] unless superclass.respond_to?(:attributes, true)
|
22
|
-
superclass.attributes.each do |attr|
|
23
|
-
attr.change_context(self)
|
24
|
-
end
|
19
|
+
@__attributes ||= __init_from_superclass(:attributes)
|
25
20
|
end
|
26
21
|
end
|
27
22
|
end
|
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'hal_presenter/property'
|
2
|
+
require 'hal_presenter/super_init'
|
2
3
|
|
3
4
|
module HALPresenter
|
4
5
|
module Collection
|
6
|
+
include SuperInit
|
5
7
|
|
6
8
|
class Properties
|
7
9
|
include Attributes
|
@@ -18,6 +20,33 @@ module HALPresenter
|
|
18
20
|
instance_exec(&block)
|
19
21
|
end
|
20
22
|
|
23
|
+
def attribute(*args, **kwargs, &block)
|
24
|
+
kwargs[:context] = scope
|
25
|
+
super
|
26
|
+
end
|
27
|
+
|
28
|
+
def link(rel, value = nil, **kwargs, &block)
|
29
|
+
kwargs[:context] = scope
|
30
|
+
super
|
31
|
+
end
|
32
|
+
|
33
|
+
def curie(rel, value = nil, **kwargs, &block)
|
34
|
+
kwargs[:context] = scope
|
35
|
+
super
|
36
|
+
end
|
37
|
+
|
38
|
+
def embed(*args, **kwargs, &block)
|
39
|
+
kwargs[:context] = scope
|
40
|
+
super
|
41
|
+
end
|
42
|
+
|
43
|
+
def change_context(context)
|
44
|
+
@scope = context
|
45
|
+
self
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
21
50
|
def method_missing(method, *args, &block)
|
22
51
|
return super unless scope&.respond_to? method
|
23
52
|
define_singleton_method(method) { |*a, &b| scope.public_send method, *a, &b }
|
@@ -31,26 +60,17 @@ module HALPresenter
|
|
31
60
|
end
|
32
61
|
|
33
62
|
def collection(of:, &block)
|
34
|
-
@
|
63
|
+
@__collection_properties = Properties.new(of, self, &block)
|
35
64
|
end
|
36
65
|
|
37
66
|
protected
|
38
67
|
|
39
68
|
def collection_properties
|
40
|
-
@
|
69
|
+
@__collection_properties ||= __init_from_superclass(:collection_properties, default: nil)
|
41
70
|
end
|
42
71
|
|
43
72
|
def can_serialize_collection?
|
44
73
|
!collection_properties.nil?
|
45
74
|
end
|
46
|
-
|
47
|
-
private
|
48
|
-
|
49
|
-
def __init_collection_params
|
50
|
-
return unless Class === self
|
51
|
-
if superclass.respond_to?(:collection_properties, true)
|
52
|
-
superclass.collection_properties
|
53
|
-
end
|
54
|
-
end
|
55
75
|
end
|
56
76
|
end
|
data/lib/hal_presenter/curies.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
require 'hal_presenter/property'
|
2
|
+
require 'hal_presenter/super_init'
|
2
3
|
|
3
4
|
module HALPresenter
|
4
5
|
module Curies
|
6
|
+
include SuperInit
|
7
|
+
|
5
8
|
class Curie < HALPresenter::Property
|
6
9
|
def to_h(resource = nil, options = {})
|
7
10
|
href = value(resource, options)
|
@@ -15,29 +18,22 @@ module HALPresenter
|
|
15
18
|
end
|
16
19
|
end
|
17
20
|
|
18
|
-
def curie(rel, value = nil,
|
21
|
+
def curie(rel, value = nil, **kwargs, &block)
|
19
22
|
if value.nil? && !block_given?
|
20
23
|
raise 'curie must be called with non nil value or be given a block'
|
21
24
|
end
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
+
|
26
|
+
kwargs[:context] ||= self
|
27
|
+
curies.delete_if { |curie| curie.name == rel }
|
28
|
+
Curie.new(rel, value, **kwargs, &block).tap do |curie|
|
29
|
+
curies << curie
|
30
|
+
end
|
25
31
|
end
|
26
32
|
|
27
33
|
protected
|
28
34
|
|
29
35
|
def curies
|
30
|
-
@_curies ||=
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def __init_curies
|
36
|
-
return [] unless Class === self
|
37
|
-
return [] unless superclass.respond_to?(:curies, true)
|
38
|
-
superclass.curies.each do |curie|
|
39
|
-
curie.change_context(self)
|
40
|
-
end
|
36
|
+
@_curies ||= __init_from_superclass(:curies)
|
41
37
|
end
|
42
38
|
end
|
43
39
|
end
|
@@ -1,36 +1,31 @@
|
|
1
1
|
require 'hal_presenter/property'
|
2
|
+
require 'hal_presenter/super_init'
|
2
3
|
|
3
4
|
module HALPresenter
|
4
5
|
module Embedded
|
6
|
+
include SuperInit
|
7
|
+
|
5
8
|
class Embed < HALPresenter::Property
|
6
9
|
attr_reader :presenter_class
|
7
10
|
|
8
|
-
def initialize(name, value = nil, **
|
9
|
-
@presenter_class =
|
10
|
-
super(name, value, **
|
11
|
+
def initialize(name, value = nil, **kwargs, &block)
|
12
|
+
@presenter_class = kwargs.delete(:presenter_class)
|
13
|
+
super(name, value, **kwargs, &block)
|
11
14
|
end
|
12
15
|
end
|
13
16
|
|
14
|
-
def embed(*args, **
|
15
|
-
|
16
|
-
|
17
|
-
|
17
|
+
def embed(*args, **kwargs, &block)
|
18
|
+
kwargs[:context] ||= self
|
19
|
+
embedded.delete_if { |embed| embed.name == args.first }
|
20
|
+
Embed.new(*args, **kwargs, &block).tap do |embed|
|
21
|
+
embedded << embed
|
22
|
+
end
|
18
23
|
end
|
19
24
|
|
20
25
|
protected
|
21
26
|
|
22
27
|
def embedded
|
23
|
-
@
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def __init_embedded
|
29
|
-
return [] unless Class === self
|
30
|
-
return [] unless superclass.respond_to?(:embedded, true)
|
31
|
-
superclass.embedded.each do |embed|
|
32
|
-
embed.change_context(self)
|
33
|
-
end
|
28
|
+
@__embedded ||= __init_from_superclass(:embedded)
|
34
29
|
end
|
35
30
|
end
|
36
31
|
end
|
@@ -5,13 +5,13 @@ module HALPresenter
|
|
5
5
|
attr_reader :resource, :options
|
6
6
|
alias resources resource
|
7
7
|
|
8
|
-
def initialize(block)
|
9
|
-
@
|
8
|
+
def initialize(block, context)
|
9
|
+
@context = context
|
10
10
|
define_singleton_method(:evaluate_block, &block)
|
11
11
|
end
|
12
12
|
|
13
13
|
def update_context(context)
|
14
|
-
@
|
14
|
+
@context = context
|
15
15
|
end
|
16
16
|
|
17
17
|
def evaluate(resource, options)
|
@@ -25,20 +25,20 @@ module HALPresenter
|
|
25
25
|
|
26
26
|
private
|
27
27
|
|
28
|
-
attr_reader :
|
28
|
+
attr_reader :context
|
29
29
|
|
30
30
|
def method_missing(method, *args, &block)
|
31
|
-
return super unless
|
31
|
+
return super unless context.respond_to?(method)
|
32
32
|
|
33
33
|
define_singleton_method(method) do |*a, &b|
|
34
|
-
|
34
|
+
context.public_send(method, *a, &b)
|
35
35
|
end
|
36
36
|
|
37
37
|
public_send(method, *args, &block)
|
38
38
|
end
|
39
39
|
|
40
40
|
def respond_to_missing?(method, _include_private = false)
|
41
|
-
|
41
|
+
context.respond_to?(method) || super
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
data/lib/hal_presenter/links.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'hal_presenter/property'
|
2
|
+
require 'hal_presenter/super_init'
|
2
3
|
|
3
4
|
module HALPresenter
|
4
5
|
|
@@ -13,24 +14,24 @@ module HALPresenter
|
|
13
14
|
end
|
14
15
|
|
15
16
|
module Links
|
17
|
+
include SuperInit
|
16
18
|
|
17
19
|
class Link < HALPresenter::Property
|
18
20
|
attr_reader :type, :deprecation, :profile, :title
|
19
21
|
attr_accessor :templated
|
20
22
|
|
23
|
+
alias rel name
|
24
|
+
|
21
25
|
def initialize(rel, value = nil, **kwargs, &block)
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
@
|
26
|
-
@deprecation = kwargs[:deprecation]
|
27
|
-
@profile = kwargs[:profile]
|
28
|
-
@title = kwargs[:title]
|
29
|
-
super(rel, value, embed_depth: kwargs[:embed_depth], &block)
|
30
|
-
end
|
26
|
+
@type = kwargs[:type].freeze
|
27
|
+
@deprecation = kwargs[:deprecation].freeze
|
28
|
+
@profile = kwargs[:profile].freeze
|
29
|
+
@title = kwargs[:title].freeze
|
31
30
|
|
32
|
-
|
33
|
-
|
31
|
+
curie = kwargs[:curie].to_s
|
32
|
+
rel = [curie, rel.to_s].join(':') unless curie.empty?
|
33
|
+
|
34
|
+
super(rel, value, kwargs.slice(:embed_depth, :context), &block)
|
34
35
|
end
|
35
36
|
|
36
37
|
def to_h(resource = nil, options = {})
|
@@ -50,25 +51,21 @@ module HALPresenter
|
|
50
51
|
end
|
51
52
|
|
52
53
|
def link(rel, value = nil, **kwargs, &block)
|
53
|
-
|
54
|
-
|
55
|
-
|
54
|
+
if value.nil? && !block_given?
|
55
|
+
raise 'link must be called with non nil value or be given a block'
|
56
|
+
end
|
57
|
+
|
58
|
+
kwargs[:context] ||= self
|
59
|
+
links.delete_if { |link| link.rel == rel }
|
60
|
+
Link.new(rel, value, **kwargs, &block).tap do |link|
|
61
|
+
links << link
|
62
|
+
end
|
56
63
|
end
|
57
64
|
|
58
65
|
protected
|
59
66
|
|
60
67
|
def links
|
61
|
-
@
|
62
|
-
end
|
63
|
-
|
64
|
-
private
|
65
|
-
|
66
|
-
def __init_links
|
67
|
-
return [] unless Class === self
|
68
|
-
return [] unless superclass.respond_to?(:links, true)
|
69
|
-
superclass.links.each do |link|
|
70
|
-
link.change_context(self)
|
71
|
-
end
|
68
|
+
@__links ||= __init_from_superclass(:links)
|
72
69
|
end
|
73
70
|
end
|
74
71
|
end
|
data/lib/hal_presenter/model.rb
CHANGED
@@ -2,6 +2,7 @@ module HALPresenter
|
|
2
2
|
@presenters = {}
|
3
3
|
|
4
4
|
def HALPresenter.register(model:, presenter:)
|
5
|
+
return unless presenter && model
|
5
6
|
@presenters[presenter] = model
|
6
7
|
end
|
7
8
|
|
@@ -14,10 +15,15 @@ module HALPresenter
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def HALPresenter.lookup_presenter(model)
|
18
|
+
lookup_presenters(model).last
|
19
|
+
end
|
20
|
+
|
21
|
+
def HALPresenter.lookup_presenters(model)
|
17
22
|
clazz = model.is_a?(Class) ? model : model.class
|
18
|
-
presenters = @presenters.select { |
|
23
|
+
presenters = @presenters.select { |_d, m| m == clazz }.keys
|
19
24
|
return presenters unless presenters.empty?
|
20
|
-
|
25
|
+
return [] unless clazz < BasicObject
|
26
|
+
lookup_presenters(clazz.superclass)
|
21
27
|
end
|
22
28
|
|
23
29
|
module Model
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module HALPresenter
|
2
|
+
module Namespace
|
3
|
+
class Executor
|
4
|
+
attr_reader :presenter, :curie
|
5
|
+
|
6
|
+
def initialize(presenter, curie)
|
7
|
+
@presenter = presenter
|
8
|
+
@curie = curie
|
9
|
+
end
|
10
|
+
|
11
|
+
def run(block)
|
12
|
+
instance_exec(&block) if block
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def link(rel, value = nil, **kwargs, &block)
|
18
|
+
add_property(:link, rel, value, **kwargs, &block)
|
19
|
+
end
|
20
|
+
|
21
|
+
def embed(rel, value = nil, **kwargs, &block)
|
22
|
+
add_property(:embed, rel, value, **kwargs, &block)
|
23
|
+
end
|
24
|
+
|
25
|
+
def add_property(method, rel, value, **kwargs, &block)
|
26
|
+
rel = add_curie!(rel, kwargs)
|
27
|
+
kwargs[:context] = presenter
|
28
|
+
presenter.public_send(method, rel, value, **kwargs, &block)
|
29
|
+
end
|
30
|
+
|
31
|
+
def add_curie!(rel, kwargs)
|
32
|
+
ns = kwargs.delete(:curie) { curie }
|
33
|
+
"#{ns}:#{rel}"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def namespace(curie, &block)
|
38
|
+
Executor.new(self, curie).run(block)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/hal_presenter/policy.rb
CHANGED
@@ -2,29 +2,41 @@ require 'hal_presenter/lazy_evaluator'
|
|
2
2
|
|
3
3
|
module HALPresenter
|
4
4
|
class Property
|
5
|
-
|
6
5
|
attr_reader :name, :embed_depth
|
7
6
|
|
8
|
-
def initialize(name, value = nil,
|
7
|
+
def initialize(name, value = nil, **kwargs, &block)
|
9
8
|
@name = name.to_sym
|
10
|
-
@value = value
|
11
|
-
@embed_depth = embed_depth
|
12
|
-
@
|
9
|
+
@value = value.freeze
|
10
|
+
@embed_depth = kwargs[:embed_depth].freeze
|
11
|
+
@context = kwargs[:context]
|
12
|
+
@lazy = block_given? ? LazyEvaluator.new(block, @context) : nil
|
13
13
|
end
|
14
14
|
|
15
15
|
def value(resource = nil, options = nil)
|
16
16
|
if @lazy
|
17
17
|
@lazy.evaluate(resource, options)
|
18
|
-
elsif
|
19
|
-
resource.public_send(name) if resource.respond_to?(name)
|
20
|
-
else
|
18
|
+
elsif @value
|
21
19
|
@value
|
20
|
+
elsif resource&.respond_to? name_without_curie
|
21
|
+
resource.public_send(name_without_curie)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
def change_context(context)
|
26
|
-
|
27
|
-
@lazy.update_context(context)
|
26
|
+
@context = context
|
27
|
+
@lazy.update_context(context) if @lazy
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def initialize_copy(source)
|
34
|
+
@lazy = source.instance_variable_get(:@lazy).clone
|
35
|
+
super
|
36
|
+
end
|
37
|
+
|
38
|
+
def name_without_curie
|
39
|
+
@name_without_curie ||= name.to_s.split(':', 2).last
|
28
40
|
end
|
29
41
|
end
|
30
42
|
end
|
@@ -21,13 +21,13 @@ module HALPresenter
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def post_serialize(&block)
|
24
|
-
@
|
24
|
+
@__post_serialize_hook = Hook.new(&block)
|
25
25
|
end
|
26
26
|
|
27
27
|
protected
|
28
28
|
|
29
29
|
def post_serialize_hook
|
30
|
-
@
|
30
|
+
@__post_serialize_hook ||= __init_post_serialize_hook
|
31
31
|
end
|
32
32
|
|
33
33
|
private
|
@@ -6,7 +6,7 @@ module HALPresenter
|
|
6
6
|
def self.to_hal(resource, options = {})
|
7
7
|
raise Serializer::Error, "Resource is nil" if resource.nil?
|
8
8
|
presenter = options.delete(:presenter)
|
9
|
-
presenter ||= HALPresenter.lookup_presenter(resource)
|
9
|
+
presenter ||= HALPresenter.lookup_presenter(resource)
|
10
10
|
raise Serializer::Error, "No presenter for #{resource.class}" unless presenter
|
11
11
|
presenter.to_hal(resource, options)
|
12
12
|
end
|
@@ -14,7 +14,7 @@ module HALPresenter
|
|
14
14
|
def self.to_collection(resources, options = {})
|
15
15
|
raise Serializer::Error, "resources is nil" if resources.nil?
|
16
16
|
presenter = options.delete(:presenter)
|
17
|
-
presenter ||= HALPresenter.lookup_presenter(resources.first)
|
17
|
+
presenter ||= HALPresenter.lookup_presenter(resources.first)
|
18
18
|
raise Serializer::Error, "No presenter for #{resources.first.class}" unless presenter
|
19
19
|
presenter.to_collection(resources, options)
|
20
20
|
end
|
@@ -69,13 +69,13 @@ module HALPresenter
|
|
69
69
|
Pagination.paginate!(serialized, resources) if options[:paginate]
|
70
70
|
|
71
71
|
# Embedded from collection block
|
72
|
-
|
73
|
-
serialized[:_embedded] = embedded[:_embedded] || {}
|
72
|
+
serialized.merge! _serialize_embedded(embedded, resources, policy, options)
|
74
73
|
|
75
74
|
# Embedded resources
|
76
75
|
options[:_depth] += 1
|
77
76
|
serialized_resources = resources.map { |resource| to_hash(resource, options) }
|
78
|
-
serialized[:_embedded]
|
77
|
+
serialized[:_embedded] ||= {}
|
78
|
+
serialized[:_embedded].merge!(properties.name => serialized_resources)
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
@@ -168,7 +168,7 @@ module HALPresenter
|
|
168
168
|
if resource.is_a? Array
|
169
169
|
_serialize_embedded_collection(resource, presenter, options)
|
170
170
|
else
|
171
|
-
presenter ||= HALPresenter.lookup_presenter(resource)
|
171
|
+
presenter ||= HALPresenter.lookup_presenter(resource)
|
172
172
|
presenter.to_hash(resource, options)
|
173
173
|
end
|
174
174
|
end
|
@@ -178,7 +178,7 @@ module HALPresenter
|
|
178
178
|
|
179
179
|
def _serialize_embedded_collection(resources, presenter, options)
|
180
180
|
clazz = resources.first.class
|
181
|
-
presenter ||= HALPresenter.lookup_presenter(clazz)
|
181
|
+
presenter ||= HALPresenter.lookup_presenter(clazz)
|
182
182
|
if presenter.nil?
|
183
183
|
raise Serializer::Error,
|
184
184
|
"No presenter specified to handle serializing embedded #{clazz}"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module HALPresenter
|
2
|
+
module SuperInit
|
3
|
+
private
|
4
|
+
|
5
|
+
def __init_from_superclass(method, default: [])
|
6
|
+
return default unless Class === self
|
7
|
+
return default unless superclass.respond_to?(method, true)
|
8
|
+
|
9
|
+
if default.respond_to? :each
|
10
|
+
superclass.send(method).map do |prop|
|
11
|
+
prop.clone.change_context(self)
|
12
|
+
end
|
13
|
+
else
|
14
|
+
prop = superclass.send(method)
|
15
|
+
return default unless prop
|
16
|
+
prop.clone.change_context(self)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
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: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sammy Henningsson
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
ZMhjYR7sRczGJx+GxGU2EaR0bjRsPVlC4ywtFxoOfRG3WaJcpWGEoAoMJX6Z0bRv
|
31
31
|
M40=
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2019-
|
33
|
+
date: 2019-07-10 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: rake
|
@@ -169,12 +169,14 @@ files:
|
|
169
169
|
- lib/hal_presenter/lazy_evaluator.rb
|
170
170
|
- lib/hal_presenter/links.rb
|
171
171
|
- lib/hal_presenter/model.rb
|
172
|
+
- lib/hal_presenter/namespace.rb
|
172
173
|
- lib/hal_presenter/pagination.rb
|
173
174
|
- lib/hal_presenter/policy.rb
|
174
175
|
- lib/hal_presenter/policy/dsl.rb
|
175
176
|
- lib/hal_presenter/property.rb
|
176
177
|
- lib/hal_presenter/serialize_hooks.rb
|
177
178
|
- lib/hal_presenter/serializer.rb
|
179
|
+
- lib/hal_presenter/super_init.rb
|
178
180
|
homepage: https://github.com/sammyhenningsson/hal_presenter
|
179
181
|
licenses:
|
180
182
|
- MIT
|
metadata.gz.sig
CHANGED
Binary file
|