曾与蒿藜同雨露,한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.终随松柏到冰霜.かつては雑草やヨモギと共に雨や露を分かち合っていたが、今では松やヒノキと共に霜や雪に耐えている。曾与蒿藜同雨露,Once sharing rain and dew with weeds and wormwood, now enduring frost and snow with pines and cypresses.终随松柏到冰霜.曾与蒿藜同雨露한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.,终随松柏到冰霜.譖セ荳手珍阯懷酔髮ィ髴イ�檎サ磯囂譚セ譟丞芦蜀ー髴�曾与蒿藜同雨露,鏇句笌钂胯棞鍚岄洦闇诧紝缁堥殢鏉炬煆鍒板啺闇�终随松柏到冰霜.曾与蒿藜同雨露,한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.终随松柏到冰霜.曾与蒿藜同雨露,终随松柏到冰霜.
#
# 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