lib/bourgeois/view_helper.rb in bourgeois-1.0 vs lib/bourgeois/view_helper.rb in bourgeois-1.0.1
- old
+ new
@@ -6,27 +6,28 @@
# 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)
+ return if object.nil?
+ return object.map { |o| present(o, klass, &blk) } if object.respond_to?(:to_a) && !object.is_a?(Struct)
- 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
+ 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
+
+ def self.presenter_class(object)
+ klass_name = "#{object.class}Presenter"
+ klass_name.constantize
+ rescue ::NameError
+ raise UnknownPresenter, klass_name
end
end
end