Class: UberPresenter::Base

Inherits:
Object
  • Object
show all
Extended by:
Memoist
Defined in:
lib/uber_presenter/base.rb

Overview

class UberPresenter::PresenterFactory

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#controllerObject (readonly)

Доступ к объекту контроллера



6
7
8
# File 'lib/uber_presenter/base.rb', line 6

def controller
  @controller
end

Class Method Details

.new(controller, *args) ⇒ Object

Создаем экземпляр презенера, уникальный для объекта controller

Parameters:

  • controller (Object)
  • args (Object)

    Набор аргументов для презентора

Returns:

  • (Object)

    Экземпляр презентера



16
17
18
19
# File 'lib/uber_presenter/base.rb', line 16

def new(controller, *args)
  storage = storage_from(controller)
  (instance = storage[self.name]).present? ? instance : (storage[self.name] = super(*args)).tap { |inst| inst.instance_variable_set(:@controller, controller) }
end

.storage_from(controller) ⇒ Hash

Получаем хранилище презенторов из контроллера controller

Parameters:

  • controller (Object)

Returns:

  • (Hash)


26
27
28
29
# File 'lib/uber_presenter/base.rb', line 26

def storage_from(controller)
  controller.instance_variable_set(:@presenters, {}) unless controller.instance_variable_names.include?('@presenters')
  controller.instance_variable_get(:@presenters)
end

Instance Method Details

#inspectObject



40
41
42
# File 'lib/uber_presenter/base.rb', line 40

def inspect
  "#<#{self.class.name}:#{self.object_id} @controller=#<#{controller.class.name}:#{controller.object_id}>>"
end

#presentersHash

Получаем хранилище презенторов

Returns:

  • (Hash)


36
37
38
# File 'lib/uber_presenter/base.rb', line 36

def presenters
  @presenters.present? ? @presenters : self.class.storage_from(controller)
end