Module: Hc::Presenter

Defined in:
lib/hc/presenter.rb,
lib/hc/presenter/base.rb,
lib/hc/presenter/version.rb,
lib/hc/presenter/helper_methods.rb

Defined Under Namespace

Modules: HelperMethods Classes: Base

Constant Summary collapse

VERSION =
"0.1.2"

Class Method Summary collapse

Class Method Details

.present(object, klass: nil, controller_context: nil, method: nil, options: {}) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/hc/presenter.rb', line 8

def self.present(object, klass: nil, controller_context: nil, method: nil, options: {})
  if object.nil?
    return object
  elsif object.is_a?(DateTime) || object.is_a?(Time)
    return object.to_formatted_s(:iso8601)
  elsif object.respond_to?(:count)
    content = object.collect{ |o| present(o, klass: klass, controller_context: controller_context, method: method, options: options) }
    return content
  else
    klass ||= "#{object.class}Presenter".constantize
    presenter_object = klass.new(object: object, controller_context: controller_context, options: options)
    if !method.nil? && presenter_object.respond_to?(method)
      presenter_object.send(method)
    else
      presenter_object.send(:format)
    end
  end
end