module DSLKit::Scope
def scope(name = :default)
def scope(name = :default) scope_get(name).dup end
def scope_block(scope_frame, name = :default)
def scope_block(scope_frame, name = :default) scope_push(scope_frame, name) yield self ensure scope_pop(name) end
def scope_get(name = :default)
def scope_get(name = :default) Thread.current[name] ||= [] end
def scope_pop(name = :default)
def scope_pop(name = :default) scope_get(name).pop scope_get(name).empty? and Thread.current[name] = nil self end
def scope_push(scope_frame, name = :default)
def scope_push(scope_frame, name = :default) scope_get(name).push scope_frame self end
def scope_reverse(name = :default, &block)
def scope_reverse(name = :default, &block) scope_get(name).reverse_each(&block) end
def scope_top(name = :default)
def scope_top(name = :default) scope_get(name).last end