The History class is responsible for maintaining the user’s input history, both internally and within Readline.
@return [Fixnum] Number of lines in history when Pry first loaded.
# File lib/pry/history.rb, line 10 def initialize(options={}) @history = [] @original_lines = 0 @file_path = options[:file_path] restore_default_behavior end
Clear this session’s history. This won’t affect the contents of the history file.
# File lib/pry/history.rb, line 58 def clear @clearer.call @history = [] end
@return [Fixnum] The number of lines in history.
# File lib/pry/history.rb, line 64 def history_line_count @history.count end
Load the input history using `#loader`. @return [Integer] The number of lines loaded
# File lib/pry/history.rb, line 35 def load @loader.call do |line| @pusher.call(line.chomp) @history << line.chomp @original_lines += 1 end end
Add a line to the input history, ignoring blank and duplicate lines. @param [String] line @return [String] The same line that was passed in
# File lib/pry/history.rb, line 46 def push(line) unless line.empty? || (@history.last && line == @history.last) @pusher.call(line) @history << line @saver.call(line) if Pry.config.history.should_save end line end
Assign the default methods for loading, saving, pushing, and clearing.
# File lib/pry/history.rb, line 18 def restore_default_behavior Pry.config.input # force Readline to load if applicable @loader = method(:read_from_file) @saver = method(:save_to_file) if defined?(Readline) @pusher = method(:push_to_readline) @clearer = method(:clear_readline) else @pusher = proc { } @clearer = proc { } end end
@return [Fixnum] The number of lines in history from just this session.
# File lib/pry/history.rb, line 69 def session_line_count @history.count - @original_lines end
Return an Array containing all stored history. @return [Array<String>] An Array containing all lines of history loaded
or entered by the user in the current session.
# File lib/pry/history.rb, line 76 def to_a @history.dup end