module HALPresenter::ClassMethods
Attributes
paginate[RW]
Public Instance Methods
base_href=(base)
click to toggle source
# File lib/hal_presenter/links.rb, line 7 def base_href=(base) @base_href = base&.sub(%r(/*$), '') end
from_hal(presenter, payload, resource = nil)
click to toggle source
# File lib/hal_presenter/deserializer.rb, line 5 def from_hal(presenter, payload, resource = nil) presenter.from_hal(payload, resource) end
href(href)
click to toggle source
# File lib/hal_presenter/links.rb, line 11 def href(href) return href if (@base_href ||= '').empty? return href if href =~ %r(\A(\w+://)?[^/]) @base_href + href end
lookup_model(presenter)
click to toggle source
# File lib/hal_presenter/model.rb, line 14 def lookup_model(presenter) @presenters[presenter] end
lookup_presenter(model)
click to toggle source
# File lib/hal_presenter/model.rb, line 18 def 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)
click to toggle source
# File lib/hal_presenter/model.rb, line 24 def 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:)
click to toggle source
# File lib/hal_presenter/model.rb, line 5 def register(model:, presenter:) return unless presenter && model @presenters[presenter] = model end
to_collection(resources, **options)
click to toggle source
# File lib/hal_presenter/serializer.rb, line 13 def to_collection(resources, **options) options = options.dup presenter!(resources, options).to_collection(resources, options) end
to_hal(resource, **options)
click to toggle source
# File lib/hal_presenter/serializer.rb, line 8 def to_hal(resource, **options) options = options.dup presenter!(resource, options).to_hal(resource, options) end
unregister(presenter)
click to toggle source
# File lib/hal_presenter/model.rb, line 10 def unregister(presenter) @presenters.delete_if { |d,_| d == presenter } end
Private Instance Methods
presenter!(resources, **options)
click to toggle source
# File lib/hal_presenter/serializer.rb, line 20 def presenter!(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 end