Module: Bourgeois::ViewHelper

Defined in:
lib/bourgeois/view_helper.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.presenter_class(object) ⇒ Object



26
27
28
29
30
31
# File 'lib/bourgeois/view_helper.rb', line 26

def self.presenter_class(object)
  klass_name = "#{object.class}Presenter"
  klass_name.constantize
rescue ::NameError
  raise UnknownPresenter, klass_name
end

Instance Method Details

#present(object, klass = nil) {|presenter| ... } ⇒ Object

Wrap a resource or a collection into its related presenter

Examples:

present User.new(name: 'Remi') do |user|
  puts user.inspect # => #<UserPresenter object=#<User name="Remi>>
  puts user.name # => Remi
end

Yields:

  • (presenter)


10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/bourgeois/view_helper.rb', line 10

def present(object, klass = nil, &blk)
  return if object.nil?
  return object.map { |o| present(o, klass, &blk) } if object.respond_to?(:to_a) && !object.is_a?(Struct)

  if object.is_a?(Bourgeois::Presenter)
    presenter = object
  else
    klass ||= ViewHelper.presenter_class(object)
  end

  presenter ||= klass.new(object, self)
  yield presenter if block_given?

  presenter
end