module LittleBoxes::Strategy

Public Instance Methods

do_configure(subject, box) click to toggle source
# 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) click to toggle source
# 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