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