module LittleBoxes::Box::ClassMethods
Public Instance Methods
entry_definitions()
click to toggle source
# File lib/little_boxes/box.rb, line 4 def entry_definitions @entry_definitions ||= {} end
inspect()
click to toggle source
# File lib/little_boxes/box.rb, line 8 def inspect "#{name}(#{entry_definitions.keys.map(&:inspect).join(", ")})" end
Private Instance Methods
box(name, klass = nil, &block)
click to toggle source
# File lib/little_boxes/box.rb, line 24 def box(name, klass = nil, &block) if klass box_from_klass(name, klass) elsif block_given? inline_box(name, &block) else fail ArgumentError, 'Either class or block should be passed as argument' end end
box_from_klass(name, klass)
click to toggle source
# File lib/little_boxes/box.rb, line 35 def box_from_klass(name, klass) eager(name) { |box| klass.new(parent: box) } end
eager(name, options={}, &block)
click to toggle source
# File lib/little_boxes/box.rb, line 72 def eager(name, options={}, &block) let(name, options.merge(eager: true), &block) end
eagerc(name, options={}, &block)
click to toggle source
# File lib/little_boxes/box.rb, line 76 def eagerc(name, options={}, &block) eager(name, options.merge(configure: true), &block) end
get(name, options={}, &block)
click to toggle source
# File lib/little_boxes/box.rb, line 51 def get(name, options={}, &block) entry_definitions[name] = EntryDefinition.new(name, options, &block) .tap do |entry| define_method(name) do @entries[name].value end end end
getc(name, options={}, &block)
click to toggle source
# File lib/little_boxes/box.rb, line 60 def getc(name, options={}, &block) get(name, options.merge(configure: true), &block) end
import(klass)
click to toggle source
# File lib/little_boxes/box.rb, line 14 def import(klass) importable_definitions = klass.entry_definitions entry_definitions.merge!(importable_definitions) importable_definitions.each_key do |name| define_method(name) do @entries[name].value end end end
inline_box(name, &block)
click to toggle source
# File lib/little_boxes/box.rb, line 39 def inline_box(name, &block) eager(name) do |box| Class.new do include ::LittleBoxes::Box define_singleton_method(:name) { "Box[#{name}]" } instance_eval(&block) end.new(parent: box) end end
let(name, options={}, &block)
click to toggle source
# File lib/little_boxes/box.rb, line 64 def let(name, options={}, &block) get(name, options.merge(memo: true), &block) end
letc(name, options={}, &block)
click to toggle source
# File lib/little_boxes/box.rb, line 68 def letc(name, options={}, &block) let(name, options.merge(configure: true), &block) end