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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e1cae2dc6aea584c397b91fc95c485b1e53602184c51d20760c02c7b0c76ac2f
4
- data.tar.gz: 7e0abe48f0337d05bea36e1fe62e2c451d18450b6044f1a5200754cb387e98a3
3
+ metadata.gz: 16a3610e1395bd29d3d097d595ad2281aa350cca865d6b372ca0ead380451423
4
+ data.tar.gz: 17b3cee5e83d9a6b533fad75091b02a2347564e98daa64090f5b83bfbab665eb
5
5
  SHA512:
6
- metadata.gz: a1f9cdfc3286ee107dd3600e7621bc1c1d435bc04c4a181301214d41999a3ea3a142522e692a85c925950cee4e4c6bb6df7449b26f53efd3a24be6ed54fcbac1
7
- data.tar.gz: f157c99026624748d91be20cf8fcf99d294a29c11f9d93e90b3ff50419e65e928256698d74c4bb50bcba956ed8e071879b2930eaa1719254c43c808cc392d86d
6
+ metadata.gz: 4ccb77b60047ad15e165ff3b510df60c0134350feb3595db6d366eed9d081e396581c18d12d047fe3695046fc1d511fe3746d11791e405054a873444706e1938
7
+ data.tar.gz: af68fdfbf7de16847a01ab2f8fa7e6d5c96e8c313fecb9a9955c7dc0c5a47b73f8e80629bb1fa2f788f7fffe8572d54a1019e2a83d946841806847b3d98b4a5e
checksums.yaml.gz.sig CHANGED
Binary file
@@ -1,24 +1,26 @@
1
1
  module HALPresenter
2
2
  @presenters = {}
3
3
 
4
- def HALPresenter.register(model:, presenter:)
4
+ def self.register(model:, presenter:)
5
5
  return unless presenter && model
6
6
  @presenters[presenter] = model
7
7
  end
8
8
 
9
- def HALPresenter.unregister(presenter)
9
+ def self.unregister(presenter)
10
10
  @presenters.delete_if { |d,_| d == presenter }
11
11
  end
12
12
 
13
- def HALPresenter.lookup_model(presenter)
13
+ def self.lookup_model(presenter)
14
14
  @presenters[presenter]
15
15
  end
16
16
 
17
- def HALPresenter.lookup_presenter(model)
18
- lookup_presenters(model).last
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 HALPresenter.lookup_presenters(model)
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
@@ -12,7 +12,7 @@ module HALPresenter
12
12
  @lazy = block_given? ? LazyEvaluator.new(block, @context) : nil
13
13
  end
14
14
 
15
- def value(resource = nil, options = nil)
15
+ def value(resource = nil, options = {})
16
16
  if @lazy
17
17
  @lazy.evaluate(resource, options)
18
18
  elsif @value
@@ -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)
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.1.0
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-07-10 00:00:00.000000000 Z
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