hal_presenter 1.1.0 → 1.2.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/lib/hal_presenter/model.rb +8 -6
- data/lib/hal_presenter/profile.rb +27 -0
- data/lib/hal_presenter/property.rb +1 -1
- data/lib/hal_presenter/serializer.rb +1 -1
- data/lib/hal_presenter.rb +2 -0
- data.tar.gz.sig +0 -0
- metadata +3 -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: 16a3610e1395bd29d3d097d595ad2281aa350cca865d6b372ca0ead380451423
|
4
|
+
data.tar.gz: 17b3cee5e83d9a6b533fad75091b02a2347564e98daa64090f5b83bfbab665eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ccb77b60047ad15e165ff3b510df60c0134350feb3595db6d366eed9d081e396581c18d12d047fe3695046fc1d511fe3746d11791e405054a873444706e1938
|
7
|
+
data.tar.gz: af68fdfbf7de16847a01ab2f8fa7e6d5c96e8c313fecb9a9955c7dc0c5a47b73f8e80629bb1fa2f788f7fffe8572d54a1019e2a83d946841806847b3d98b4a5e
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/hal_presenter/model.rb
CHANGED
@@ -1,24 +1,26 @@
|
|
1
1
|
module HALPresenter
|
2
2
|
@presenters = {}
|
3
3
|
|
4
|
-
def
|
4
|
+
def self.register(model:, presenter:)
|
5
5
|
return unless presenter && model
|
6
6
|
@presenters[presenter] = model
|
7
7
|
end
|
8
8
|
|
9
|
-
def
|
9
|
+
def self.unregister(presenter)
|
10
10
|
@presenters.delete_if { |d,_| d == presenter }
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
13
|
+
def self.lookup_model(presenter)
|
14
14
|
@presenters[presenter]
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
18
|
-
lookup_presenters(model)
|
17
|
+
def self.lookup_presenter(model)
|
18
|
+
presenters = lookup_presenters(model)
|
19
|
+
return presenters.last unless presenters.empty?
|
20
|
+
lookup_presenters(model.first).last if model.respond_to? :first
|
19
21
|
end
|
20
22
|
|
21
|
-
def
|
23
|
+
def self.lookup_presenters(model)
|
22
24
|
clazz = model.is_a?(Class) ? model : model.class
|
23
25
|
presenters = @presenters.select { |_d, m| m == clazz }.keys
|
24
26
|
return presenters unless presenters.empty?
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'hal_presenter/super_init'
|
2
|
+
|
3
|
+
module HALPresenter
|
4
|
+
module Profile
|
5
|
+
include SuperInit
|
6
|
+
|
7
|
+
def profile(value = nil, **kwargs, &block)
|
8
|
+
if value.nil? && !block_given?
|
9
|
+
raise 'profile must be called with non nil value or be given a block'
|
10
|
+
end
|
11
|
+
|
12
|
+
kwargs[:context] ||= self
|
13
|
+
@__semantic_profile = Property.new('profile', value, **kwargs, &block)
|
14
|
+
end
|
15
|
+
|
16
|
+
def semantic_profile(object = nil, **kwargs)
|
17
|
+
init_profile
|
18
|
+
@__semantic_profile&.value(object, kwargs)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def init_profile
|
24
|
+
@__semantic_profile ||= __init_from_superclass(:init_profile, default: nil)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
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
|
17
|
+
presenter ||= HALPresenter.lookup_presenter(resources)
|
18
18
|
raise Serializer::Error, "No presenter for #{resources.first.class}" unless presenter
|
19
19
|
presenter.to_collection(resources, options)
|
20
20
|
end
|
data/lib/hal_presenter.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'hal_presenter/model'
|
2
2
|
require 'hal_presenter/policy'
|
3
|
+
require 'hal_presenter/profile'
|
3
4
|
require 'hal_presenter/policy/dsl'
|
4
5
|
require 'hal_presenter/attributes'
|
5
6
|
require 'hal_presenter/links'
|
@@ -22,5 +23,6 @@ module HALPresenter
|
|
22
23
|
include HALPresenter::Serializer
|
23
24
|
include HALPresenter::Deserializer
|
24
25
|
include HALPresenter::Policy
|
26
|
+
include HALPresenter::Profile
|
25
27
|
include HALPresenter::Namespace
|
26
28
|
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: 1.
|
4
|
+
version: 1.2.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-08-26 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: rake
|
@@ -173,6 +173,7 @@ files:
|
|
173
173
|
- lib/hal_presenter/pagination.rb
|
174
174
|
- lib/hal_presenter/policy.rb
|
175
175
|
- lib/hal_presenter/policy/dsl.rb
|
176
|
+
- lib/hal_presenter/profile.rb
|
176
177
|
- lib/hal_presenter/property.rb
|
177
178
|
- lib/hal_presenter/serialize_hooks.rb
|
178
179
|
- lib/hal_presenter/serializer.rb
|
metadata.gz.sig
CHANGED
Binary file
|