module LittleBoxes::Box

Attributes

entries[R]
parent[R]

Public Class Methods

included(klass) click to toggle source
# File lib/little_boxes/box.rb, line 83
def self.included(klass)
  klass.extend ClassMethods
end
new(parent: nil) click to toggle source
# File lib/little_boxes/box.rb, line 110
def initialize(parent: nil)
  @parent = parent
  @entries = entry_definitions.each_with_object({}) do |(k,v), acc|
    acc[k] = v.for(self)
  end
  @entries.values.select(&:eager).each { |e| send(e.name) }
end

Public Instance Methods

[](name) click to toggle source
# File lib/little_boxes/box.rb, line 87
def [] name
  entry = @entries[name] ||= (@parent && @parent.entries[name])
  entry ? entry.value : (parent && parent[name])
end
inspect() click to toggle source
# File lib/little_boxes/box.rb, line 92
def inspect
  "#<#{self.class.name} #{entries.keys.map(&:inspect).join(", ")}>"
end
method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/little_boxes/box.rb, line 96
def method_missing(name, *args, &block)
  if respond_to?(name)
    self[name.to_sym]
  else
    super
  end
end
respond_to_missing?(name, include_private = false) click to toggle source
# File lib/little_boxes/box.rb, line 104
def respond_to_missing?(name, include_private = false)
  @parent.respond_to?(name, include_private)
end

Private Instance Methods

entry_definitions() click to toggle source
# File lib/little_boxes/box.rb, line 118
def entry_definitions
  self.class.entry_definitions
end