Class: BusScheme::Scope

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

Instance Method Summary collapse

Constructor Details

#initialize(table, parent) ⇒ Scope

Returns a new instance of Scope.



3
4
5
6
# File 'lib/lambda.rb', line 3

def initialize(table, parent)
  @parent = parent
  table.each { |k, v| self[k] = v }
end

Instance Method Details

#[](symbol) ⇒ Object



14
15
16
# File 'lib/lambda.rb', line 14

def [](symbol)
  lookup(symbol) or @parent && @parent[symbol]
end

#[]=(symbol, value) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/lambda.rb', line 19

def []=(symbol, value)
  if !old_has_key?(symbol) and @parent and @parent.has_key?(symbol)
    @parent[symbol] = value
  else
    old_set symbol, value
  end
end

#has_key?(symbol) ⇒ Boolean

Returns:

  • (Boolean)


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

def has_key?(symbol)
  old_has_key?(symbol) or @parent && @parent.has_key?(symbol)
end

#lookupObject



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

alias_method :lookup, :[]

#old_has_key?Object



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

alias_method :old_has_key?, :has_key?

#old_setObject



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

alias_method :old_set, :[]=