class SexpProcessor::Environment
I really hate this here, but I hate subdirs in my lib dir more… I guess it is kinda like shaving… I'll split this out when it itches too much…
Public Class Methods
new()
click to toggle source
# File lib/sexp_processor.rb, line 351 def initialize @env = [] @env.unshift({}) end
Public Instance Methods
[](name)
click to toggle source
TODO: depth_of
# File lib/sexp_processor.rb, line 366 def [] name hash = @env.find { |closure| closure.has_key? name } hash[name] if hash end
[]=(name, val)
click to toggle source
# File lib/sexp_processor.rb, line 371 def []= name, val hash = @env.find { |closure| closure.has_key? name } || current hash[name] = val end
all()
click to toggle source
# File lib/sexp_processor.rb, line 356 def all @env.reverse.inject { |env, scope| env.merge scope } end
current()
click to toggle source
# File lib/sexp_processor.rb, line 376 def current @env.first end
depth()
click to toggle source
# File lib/sexp_processor.rb, line 360 def depth @env.length end
scope() { || ... }
click to toggle source
# File lib/sexp_processor.rb, line 380 def scope @env.unshift({}) begin yield ensure @env.shift raise "You went too far unextending env" if @env.empty? end end