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 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