Class: BusScheme::RecursiveHash

Inherits:
Hash
  • Object
show all
Defined in:
lib/lambda.rb

Overview

The RecursiveHash is needed to store Lambda environments

Instance Method Summary collapse

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

Returns:

  • (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_lookupObject



12
# File 'lib/lambda.rb', line 12

alias_method :immediate_lookup, :[]

#immediate_setObject



11
# File 'lib/lambda.rb', line 11

alias_method :immediate_set, :[]=