Module: HALPresenter
- Includes:
- Attributes, Collection, Curies, Deserializer, Embedded, Links, Model, Namespace, Policy, Profile, SerializeHooks, Serializer
- Defined in:
- lib/hal_presenter.rb,
lib/hal_presenter/links.rb,
lib/hal_presenter/model.rb,
lib/hal_presenter/curies.rb,
lib/hal_presenter/policy.rb,
lib/hal_presenter/profile.rb,
lib/hal_presenter/embedded.rb,
lib/hal_presenter/property.rb,
lib/hal_presenter/namespace.rb,
lib/hal_presenter/attributes.rb,
lib/hal_presenter/collection.rb,
lib/hal_presenter/pagination.rb,
lib/hal_presenter/policy/dsl.rb,
lib/hal_presenter/serializer.rb,
lib/hal_presenter/super_init.rb,
lib/hal_presenter/deserializer.rb,
lib/hal_presenter/lazy_evaluator.rb,
lib/hal_presenter/serialize_hooks.rb
Defined Under Namespace
Modules: Attributes, Collection, Curies, Deserializer, Embedded, Links, Model, Namespace, Policy, Profile, SerializeHooks, Serializer, SuperInit
Classes: LazyEvaluator, Pagination, Property
Class Attribute Summary collapse
Class Method Summary
collapse
Methods included from Namespace
#namespace
Methods included from Profile
#profile, #semantic_profile
Methods included from Policy
#policy
#from_hal
Methods included from Serializer
#to_collection, #to_hal
Methods included from Model
#inherited, #model
#post_serialize
Methods included from Collection
#collection
Methods included from Embedded
#embed
Methods included from Curies
#curie
Methods included from Links
#link
Methods included from Attributes
#attribute
Class Attribute Details
.paginate ⇒ Object
Returns the value of attribute paginate.
3
4
5
|
# File 'lib/hal_presenter/pagination.rb', line 3
def paginate
@paginate
end
|
Class Method Details
.base_href=(base) ⇒ Object
6
7
8
|
# File 'lib/hal_presenter/links.rb', line 6
def self.base_href=(base)
@base_href = base&.sub(%r(/*$), '')
end
|
.from_hal(presenter, payload, resource = nil) ⇒ Object
5
6
7
|
# File 'lib/hal_presenter/deserializer.rb', line 5
def self.from_hal(presenter, payload, resource = nil)
presenter.from_hal(payload, resource)
end
|
.href(href) ⇒ Object
10
11
12
13
14
|
# File 'lib/hal_presenter/links.rb', line 10
def self.href(href)
return href if (@base_href ||= '').empty?
return href if href =~ %r(\A(\w+://)?[^/])
@base_href + href
end
|
.lookup_model(presenter) ⇒ Object
13
14
15
|
# File 'lib/hal_presenter/model.rb', line 13
def self.lookup_model(presenter)
@presenters[presenter]
end
|
.lookup_presenter(model) ⇒ Object
17
18
19
20
21
|
# File 'lib/hal_presenter/model.rb', line 17
def self.lookup_presenter(model)
presenters = lookup_presenters(model)
return presenters.last unless presenters.empty?
lookup_presenters(model.first).last if model.respond_to? :first
end
|
.lookup_presenters(model) ⇒ Object
23
24
25
26
27
28
29
|
# File 'lib/hal_presenter/model.rb', line 23
def self.lookup_presenters(model)
clazz = model.is_a?(Class) ? model : model.class
presenters = @presenters.select { |_d, m| m == clazz }.keys
return presenters unless presenters.empty?
return [] unless clazz < BasicObject
lookup_presenters(clazz.superclass)
end
|
.register(model:, presenter:) ⇒ Object
4
5
6
7
|
# File 'lib/hal_presenter/model.rb', line 4
def self.register(model:, presenter:)
return unless presenter && model
@presenters[presenter] = model
end
|
.to_collection(resources, options = {}) ⇒ Object
14
15
16
17
18
19
20
|
# File 'lib/hal_presenter/serializer.rb', line 14
def self.to_collection(resources, options = {})
raise Serializer::Error, "resources is nil" if resources.nil?
presenter = options.delete(:presenter)
presenter ||= HALPresenter.lookup_presenter(resources)
raise Serializer::Error, "No presenter for #{resources.first.class}" unless presenter
presenter.to_collection(resources, options)
end
|
.to_hal(resource, options = {}) ⇒ Object
6
7
8
9
10
11
12
|
# File 'lib/hal_presenter/serializer.rb', line 6
def self.to_hal(resource, options = {})
raise Serializer::Error, "Resource is nil" if resource.nil?
presenter = options.delete(:presenter)
presenter ||= HALPresenter.lookup_presenter(resource)
raise Serializer::Error, "No presenter for #{resource.class}" unless presenter
presenter.to_hal(resource, options)
end
|
.unregister(presenter) ⇒ Object
9
10
11
|
# File 'lib/hal_presenter/model.rb', line 9
def self.unregister(presenter)
@presenters.delete_if { |d,_| d == presenter }
end
|