Class: BusScheme::RecursiveHash
Overview
The RecursiveHash is needed to store Lambda environments
Instance Method Summary collapse
- #[](symbol) ⇒ Object
- #[]=(symbol, value) ⇒ Object
- #has_key?(symbol) ⇒ Boolean
- #immediate_has_key? ⇒ Object
- #immediate_lookup ⇒ Object
- #immediate_set ⇒ Object
-
#initialize(hash, parent) ⇒ RecursiveHash
constructor
takes a hash and a parent.
Constructor Details
#initialize(hash, parent) ⇒ RecursiveHash
takes a hash and a parent
5 6 7 8 |
# File 'lib/lambda.rb', line 5 def initialize(hash, parent) @parent = parent hash.each { |k, v| self[k] = v } end |
Instance Method Details
#[](symbol) ⇒ Object
18 19 20 |
# File 'lib/lambda.rb', line 18 def [](symbol) immediate_lookup(symbol) or @parent && @parent[symbol] end |
#[]=(symbol, value) ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/lambda.rb', line 22 def []=(symbol, value) if !immediate_has_key?(symbol) and @parent and @parent.has_key?(symbol) @parent[symbol] = value else immediate_set symbol, value end end |
#has_key?(symbol) ⇒ Boolean
14 15 16 |
# File 'lib/lambda.rb', line 14 def has_key?(symbol) immediate_has_key?(symbol) or @parent && @parent.has_key?(symbol) end |
#immediate_has_key? ⇒ Object
10 |
# File 'lib/lambda.rb', line 10 alias_method :immediate_has_key?, :has_key? |
#immediate_lookup ⇒ Object
12 |
# File 'lib/lambda.rb', line 12 alias_method :immediate_lookup, :[] |
#immediate_set ⇒ Object
11 |
# File 'lib/lambda.rb', line 11 alias_method :immediate_set, :[]= |