Class: FactoryBurgers::PresenterBuilder

Inherits:
BasicObject
Defined in:
lib/factory_burgers/presenter_builder.rb

Overview

The PresenterBuilder is resposible for building anonymous subclasses of FactoryBurgers::Presenters::Base when FactoryBurgers::Presenters.present is called with a block. The block is evaluated in the context of a FactoryBurgers::PresenterBuilder instance, which understands the DSL.

Instance Method Summary collapse

Constructor Details

#initialize(klass) ⇒ PresenterBuilder

Returns a new instance of PresenterBuilder.



7
8
9
10
# File 'lib/factory_burgers/presenter_builder.rb', line 7

def initialize(klass)
  @presenter = ::Class.new(::FactoryBurgers::Presenters::Base)
  @klass = klass
end

Instance Method Details

#attributes(&blk) ⇒ Object



27
28
29
30
31
# File 'lib/factory_burgers/presenter_builder.rb', line 27

def attributes(&blk)
  @presenter.define_method(:attributes) do
    blk.call(object)
  end
end

#build(&blk) ⇒ Object



12
13
14
15
# File 'lib/factory_burgers/presenter_builder.rb', line 12

def build(&blk)
  instance_eval(&blk)
  return @presenter
end


33
34
35
36
37
# File 'lib/factory_burgers/presenter_builder.rb', line 33

def link_path(&blk)
  @presenter.define_method(:link_path) do
    blk.call(object)
  end
end

#presents(name) ⇒ Object



17
18
19
# File 'lib/factory_burgers/presenter_builder.rb', line 17

def presents(name)
  @presetner.presents(name)
end

#type(&blk) ⇒ Object



21
22
23
24
25
# File 'lib/factory_burgers/presenter_builder.rb', line 21

def type(&blk)
  @presenter.define_method(:type) do
    blk.call(object)
  end
end