Module: LittleBoxes::Strategy

Defined in:
lib/little_boxes/strategy.rb

Class Method Summary collapse

Class Method Details

.do_configure(subject, box) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/little_boxes/strategy.rb', line 19

def do_configure(subject, box)
  config = {box: box}

  config.default_proc = Proc.new do |h, name|
    h[name] = h[:box][name]
  end

  subject.config = config

  subject
end

.for(block, memo: false, configure: false, then_block: nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/little_boxes/strategy.rb', line 5

def for(block, memo: false, configure: false, then_block: nil)
  code = "block.call(bx)"
  code = "do_configure(#{code}, bx)" if configure
  code = "#{code}.tap { |v| then_block.call v, bx }" if then_block

  if memo
    code = "value = nil; ->(bx) { value ||= #{code} }"
  else
    code = "->(bx) { #{code} }"
  end

  eval code
end