Module: LittleBoxes::Box

Defined in:
lib/little_boxes/box.rb

Defined Under Namespace

Modules: ClassMethods

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object



94
95
96
97
98
99
100
# File 'lib/little_boxes/box.rb', line 94

def method_missing(name, *args, &block)
  if respond_to?(name)
    self[name.to_sym]
  else
    super
  end
end

Instance Attribute Details

#entriesObject (readonly)

Returns the value of attribute entries.



79
80
81
# File 'lib/little_boxes/box.rb', line 79

def entries
  @entries
end

#parentObject (readonly)

Returns the value of attribute parent.



79
80
81
# File 'lib/little_boxes/box.rb', line 79

def parent
  @parent
end

Class Method Details

.included(klass) ⇒ Object



81
82
83
# File 'lib/little_boxes/box.rb', line 81

def self.included(klass)
  klass.extend ClassMethods
end

Instance Method Details

#[](name) ⇒ Object



85
86
87
88
# File 'lib/little_boxes/box.rb', line 85

def [] name
  entry = @entries[name] ||= (@parent && @parent.entries[name])
  entry ? entry.value : (parent && parent[name])
end

#inspectObject



90
91
92
# File 'lib/little_boxes/box.rb', line 90

def inspect
  "#<#{self.class.name} #{entries.keys.map(&:inspect).join(", ")}>"
end

#respond_to_missing?(name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


102
103
104
# File 'lib/little_boxes/box.rb', line 102

def respond_to_missing?(name, include_private = false)
  @parent.respond_to?(name, include_private)
end