class Nydp::SymbolLookup

Public Class Methods

build(name, original_bindings, ns) click to toggle source
# File lib/nydp/symbol_lookup.rb, line 14
def self.build name, original_bindings, ns
  effective_bindings = skip_empty original_bindings
  depth    = 0
  while NIL != effective_bindings
    here = effective_bindings.car
    if here.key? name
      binding_index = here[name]
      return ContextSymbol.build(depth, name, binding_index, original_bindings.index_of(here))
    else
      depth += 1
      effective_bindings = skip_empty effective_bindings.cdr
    end
  end

  Nydp::Symbol.new name.to_s.to_sym
end
skip_empty(bindings) click to toggle source
# File lib/nydp/symbol_lookup.rb, line 7
def self.skip_empty bindings
  while (NIL != bindings) && bindings.car.empty?
    bindings = bindings.cdr
  end
  bindings
end