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 @history = [] @saved_lines = 0 @original_lines = 0 restore_default_behavior end
Clear all history. Anything the user entered before this point won't be saved, but anything they put in afterwards will still be appended to the history file on exit.
# File lib/pry/history.rb, line 59 def clear @clearer.call @history = [] @saved_lines = 0 end
@return [Fixnum] The number of lines in history.
# File lib/pry/history.rb, line 66 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 27 def load @loader.call do |line| @pusher.call(line.chomp) @history << line.chomp end @saved_lines = @original_lines = @history.length 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 47 def push(line) unless line.empty? || (@history.last && line == @history.last) @pusher.call(line) @history << line end line end
Assign the default methods for loading, saving, pushing, and clearing.
# File lib/pry/history.rb, line 18 def restore_default_behavior @loader = method(:read_from_file) @saver = method(:write_to_file) @pusher = method(:push_to_readline) @clearer = method(:clear_readline) end
Write this session's history using `#saver`. @return [Integer] The number of lines saved
# File lib/pry/history.rb, line 37 def save history_to_save = @history[@saved_lines..-1] @saver.call(history_to_save) @saved_lines = @history.length history_to_save.length end
# File lib/pry/history.rb, line 70 def session_line_count @history.count - @original_lines end