hal_presenter 1.1.0 → 1.2.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/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
|