[](k)
click to toggle source
[]=(k, v)
click to toggle source
def []= k, v
raise "no" if v == true
self.current[k] = v
end
all()
click to toggle source
def all
idx = @dyn.index(false) || 0
@env[0..idx].reverse.inject { |env, scope| env.merge scope }
end
current()
click to toggle source
def current
@env.first
end
dynamic()
click to toggle source
def dynamic
idx = @dyn.index false
@env[0...idx].reverse.inject { |env, scope| env.merge scope } || {}
end
dynamic?()
click to toggle source
def dynamic?
@dyn[0] != false
end
extend(dyn = false)
click to toggle source
def extend dyn = false
@dyn.unshift dyn
@env.unshift({})
@use.unshift({})
end
reset()
click to toggle source
def reset
@dyn.clear
@env.clear
@use.clear
self.extend
end
unextend()
click to toggle source
def unextend
@dyn.shift
@env.shift
@use.shift
raise "You went too far unextending env" if @env.empty?
end
use(id)
click to toggle source
def use id
@env.each_with_index do |env, i|
if env[id] then
@use[i][id] = true
end
end
end
used?(id)
click to toggle source
def used? id
idx = @dyn.index false
u = @use[0...idx].reverse.inject { |env, scope| env.merge scope } || {}
u[id]
end