Class: Holodekk::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/holodekk/builder.rb,
lib/holodekk/builder/option.rb,
lib/holodekk/builder/instruction.rb

Defined Under Namespace

Classes: Instruction, Option

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(instructions, options = nil) ⇒ Builder

Returns a new instance of Builder.



28
29
30
31
# File 'lib/holodekk/builder.rb', line 28

def initialize(instructions, options = nil)
  @instructions = instructions
  @options = options
end

Class Method Details

.instruction(klass) ⇒ Object



9
10
11
12
13
14
15
# File 'lib/holodekk/builder.rb', line 9

def instruction(klass)
  method_name = klass.name.split('::').last.underscore
  define_method method_name do |*args, **kwargs, &block|
    ins = klass.build(*args, **kwargs, &block)
    @instructions << ins
  end
end

.option(klass) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/holodekk/builder.rb', line 17

def option(klass)
  method_name = klass.name.split('::').last.underscore
  define_method method_name do |*args, **kwargs, &block|
    raise "option #{method_name} invoked, but no options target supplied to builder." if @options.nil?

    opt = klass.build(*args, **kwargs, &block)
    @options << opt
  end
end