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



96
97
98
99
100
101
102
# 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

Instance Attribute Details

#entriesObject (readonly)

Returns the value of attribute entries.



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

def entries
  @entries
end

#parentObject (readonly)

Returns the value of attribute parent.



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

def parent
  @parent
end

Class Method Details

.included(klass) ⇒ Object



83
84
85
# File 'lib/little_boxes/box.rb', line 83

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

Instance Method Details

#[](name) ⇒ Object



87
88
89
90
# File 'lib/little_boxes/box.rb', line 87

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

#inspectObject



92
93
94
# File 'lib/little_boxes/box.rb', line 92

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

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

Returns:

  • (Boolean)


104
105
106
# File 'lib/little_boxes/box.rb', line 104

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