Module: HALPresenter::Model::ClassMethods

Defined in:
lib/hal_presenter/model.rb

Instance Method Summary collapse

Instance Method Details

#lookup_model(presenter) ⇒ Object



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

def lookup_model(presenter)
  @presenters[presenter]
end

#lookup_presenter(model) ⇒ Object



19
20
21
22
23
# File 'lib/hal_presenter/model.rb', line 19

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



25
26
27
28
29
30
31
# File 'lib/hal_presenter/model.rb', line 25

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



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

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

#unregister(presenter) ⇒ Object



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

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