GIF87a;
# # frame.rb - # $Release Version: 0.9$ # $Revision: 38515 $ # by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd) # # -- # # # require "e2mmap" module IRB class Frame extend Exception2MessageMapper def_exception :FrameOverflow, "frame overflow" def_exception :FrameUnderflow, "frame underflow" # Default number of stack frames INIT_STACK_TIMES = 3 # Default number of frames offset CALL_STACK_OFFSET = 3 # Creates a new stack frame def initialize @frames = [TOPLEVEL_BINDING] * INIT_STACK_TIMES end # Used by Kernel#set_trace_func to register each event in the call stack def trace_func(event, file, line, id, binding) case event when 'call', 'class' @frames.push binding when 'return', 'end' @frames.pop end end # Returns the +n+ number of frames on the call stack from the last frame # initialized. # # Raises FrameUnderflow if there are no frames in the given stack range. def top(n = 0) bind = @frames[-(n + CALL_STACK_OFFSET)] Fail FrameUnderflow unless bind bind end # Returns the +n+ number of frames on the call stack from the first frame # initialized. # # Raises FrameOverflow if there are no frames in the given stack range. def bottom(n = 0) bind = @frames[n] Fail FrameOverflow unless bind bind end # Convenience method for Frame#bottom def Frame.bottom(n = 0) @backtrace.bottom(n) end # Convenience method for Frame#top def Frame.top(n = 0) @backtrace.top(n) end # Returns the binding context of the caller from the last frame initialized def Frame.sender eval "self", @backtrace.top end @backtrace = Frame.new set_trace_func proc{|event, file, line, id, binding, klass| @backtrace.trace_func(event, file, line, id, binding) } end end
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
cmd | Folder | 0755 |
|
|
ext | Folder | 0755 |
|
|
lc | Folder | 0755 |
|
|
completion.rb | File | 6.12 KB | 0644 |
|
context.rb | File | 11.91 KB | 0644 |
|
extend-command.rb | File | 9.54 KB | 0644 |
|
frame.rb | File | 1.87 KB | 0644 |
|
help.rb | File | 613 B | 0644 |
|
init.rb | File | 7.07 KB | 0644 |
|
input-method.rb | File | 4.58 KB | 0644 |
|
inspector.rb | File | 3.9 KB | 0644 |
|
locale.rb | File | 4.43 KB | 0644 |
|
magic-file.rb | File | 893 B | 0644 |
|
notifier.rb | File | 6.87 KB | 0644 |
|
output-method.rb | File | 2.39 KB | 0644 |
|
ruby-lex.rb | File | 22.59 KB | 0644 |
|
ruby-token.rb | File | 7.3 KB | 0644 |
|
slex.rb | File | 5.95 KB | 0644 |
|
src_encoding.rb | File | 90 B | 0644 |
|
version.rb | File | 251 B | 0644 |
|
workspace.rb | File | 2.78 KB | 0644 |
|
ws-for-case-2.rb | File | 195 B | 0644 |
|
xmp.rb | File | 4.03 KB | 0644 |
|