Module: HALPresenter::ClassMethods

Defined in:
lib/hal_presenter/links.rb,
lib/hal_presenter/model.rb,
lib/hal_presenter/pagination.rb,
lib/hal_presenter/serializer.rb,
lib/hal_presenter/deserializer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#paginateObject

Returns the value of attribute paginate.



3
4
5
# File 'lib/hal_presenter/pagination.rb', line 3

def paginate
  @paginate
end

Instance Method Details

#base_href=(base) ⇒ Object



7
8
9
# File 'lib/hal_presenter/links.rb', line 7

def 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 from_hal(presenter, payload, resource = nil)
  presenter.from_hal(payload, resource)
end

#href(href) ⇒ Object



11
12
13
14
15
# 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) ⇒ Object



14
15
16
# File 'lib/hal_presenter/model.rb', line 14

def lookup_model(presenter)
  @presenters[presenter]
end

#lookup_presenter(model) ⇒ Object



18
19
20
21
22
# 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) ⇒ Object



24
25
26
27
28
29
30
# 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:) ⇒ Object



5
6
7
8
# File 'lib/hal_presenter/model.rb', line 5

def register(model:, presenter:)
  return unless presenter && model
  @presenters[presenter] = model
end

#to_collection(resources, **options) ⇒ Object



13
14
15
16
# 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) ⇒ Object



8
9
10
11
# 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) ⇒ Object



10
11
12
# File 'lib/hal_presenter/model.rb', line 10

def unregister(presenter)
  @presenters.delete_if { |d,_| d == presenter }
end