def resolve
scanner = StringScanner.new(@path_string.strip)
stack = @current_stack.dup
begin
next_segment = ""
loop do
next_segment << scanner.scan(/[^\/]*/)
if complete?(next_segment) || scanner.eos?
scanner.getch
break
else
next_segment << scanner.getch
end
end
case next_segment.chomp
when ""
stack = [stack.first]
when "::"
stack.push(TOPLEVEL_BINDING)
when "."
next
when ".."
stack.pop unless stack.size == 1
else
stack.push(Pry.binding_for(stack.last.eval(next_segment)))
end
rescue RescuableException => e
return handle_failure(next_segment, e)
end until scanner.eos?
stack
end