Sha256: 10db62f2f6382004bae647c95d522edad8b7a625183cc2ca90a0fc3f7ead5e80
Contents?: true
Size: 879 Bytes
Versions: 1
Compression:
Stored size: 879 Bytes
Contents
module Bourgeois module ViewHelper # Wrap a resource or a collection into its related presenter # # @example # present User.new(name: 'Remi') do |user| # puts user.inspect # => #<UserPresenter object=#<User name="Remi>> # puts user.name # => Remi # end def present(object, klass = nil, &blk) return object.map { |o| present(o, klass, &blk) } if object.respond_to?(:to_a) if klass.blank? if object.is_a?(Bourgeois::Presenter) presenter = object else begin klass_name = "#{object.class}Presenter" klass = klass_name.constantize rescue ::NameError raise UnknownPresenter.new(klass_name) end end end presenter ||= klass.new(object, self) yield presenter if block_given? presenter end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
bourgeois-1.0 | lib/bourgeois/view_helper.rb |