module PryStackExplorer
def bindings_equal?(b1, b2)
-
(Boolean)- Whether the `Binding`s are equal.
Parameters:
-
b2(Binding) -- Second binding. -
b1(Binding) -- First binding.
def bindings_equal?(b1, b2) (b1.eval('self').equal?(b2.eval('self'))) && (b1.eval('__method__') == b2.eval('__method__')) && (b1.eval('local_variables').map { |v| b1.eval("#{v}") }.equal?( b2.eval('local_variables').map { |v| b2.eval("#{v}") })) end
def clear_frame_managers(_pry_)
-
_pry_(Pry) -- The Pry instance associated with the frame managers
def clear_frame_managers(_pry_) pop_frame_manager(_pry_) until frame_managers(_pry_).empty? frame_hash.delete(_pry_) # this line should be unnecessary! end
def create_and_push_frame_manager(bindings, _pry_, options={})
-
_pry_(Pry) -- The Pry instance associated with the frame manager -
bindings(Array) -- The array of bindings (frames)
def create_and_push_frame_manager(bindings, _pry_, options={}) fm = FrameManager.new(bindings, _pry_) frame_hash[_pry_].push fm push_helper(fm, options) fm end
def frame_hash
-
(Hash)- The hash storing all frames for all Pry instances for
def frame_hash Thread.current[:__pry_frame_managers__] ||= Hash.new { |h, k| h[k] = [] } end
def frame_manager(_pry_)
-
(PryStackExplorer::FrameManager)- The currently active frame manager
def frame_manager(_pry_) frame_hash[_pry_].last end
def frame_managers(_pry_)
-
(Array)- The stack of Pry::FrameManager objections
Parameters:
-
_pry_(Pry) -- The Pry instance associated with the frame
def frame_managers(_pry_) frame_hash[_pry_] end
def pop_frame_manager(_pry_)
-
(Pry::FrameManager)- The popped frame manager.
Parameters:
-
_pry_(Pry) -- The Pry instance associated with the frame
def pop_frame_manager(_pry_) return if frame_managers(_pry_).empty? popped_fm = frame_managers(_pry_).pop pop_helper(popped_fm, _pry_) popped_fm end
def pop_helper(popped_fm, _pry_)
-
_pry_(Pry) -- The Pry instance associated with the frame managers. -
popped_fm(Pry::FrameManager) -- The recently popped frame manager.
def pop_helper(popped_fm, _pry_) if frame_managers(_pry_).empty? if _pry_.binding_stack.empty? _pry_.binding_stack.push popped_fm.prior_binding else _pry_.binding_stack[-1] = popped_fm.prior_binding end frame_hash.delete(_pry_) else frame_manager(_pry_).refresh_frame(false) end # restore backtrace _pry_.backtrace = popped_fm.prior_backtrace end
def push_helper(fm, options={})
-
options(Hash) -- The options hash. -
fm(PryStackExplorer::FrameManager) -- The active frame manager.
def push_helper(fm, options={}) options = { :initial_frame => 0 }.merge!(options) fm.change_frame_to(options[:initial_frame], false) end