Class: Pry::History

Inherits:
Object show all
Defined in:
lib/pry/history.rb

Overview

The History class is responsible for maintaining the user's input history, both internally and within Readline.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ History

Returns a new instance of History



10
11
12
13
14
15
# File 'lib/pry/history.rb', line 10

def initialize(options={})
  @history = []
  @original_lines = 0
  @file_path = options[:file_path]
  restore_default_behavior
end

Instance Attribute Details

#clearerObject

Returns the value of attribute clearer



5
6
7
# File 'lib/pry/history.rb', line 5

def clearer
  @clearer
end

#loaderObject

Returns the value of attribute loader



5
6
7
# File 'lib/pry/history.rb', line 5

def loader
  @loader
end

#original_linesFixnum (readonly)

Returns Number of lines in history when Pry first loaded.

Returns:

  • (Fixnum)

    Number of lines in history when Pry first loaded.



8
9
10
# File 'lib/pry/history.rb', line 8

def original_lines
  @original_lines
end

#pusherObject

Returns the value of attribute pusher



5
6
7
# File 'lib/pry/history.rb', line 5

def pusher
  @pusher
end

#saverObject

Returns the value of attribute saver



5
6
7
# File 'lib/pry/history.rb', line 5

def saver
  @saver
end

Instance Method Details

#clearObject

Clear this session's history. This won't affect the contents of the history file.



58
59
60
61
# File 'lib/pry/history.rb', line 58

def clear
  @clearer.call
  @history = []
end

#history_line_countFixnum

Returns The number of lines in history.

Returns:

  • (Fixnum)

    The number of lines in history.



64
65
66
# File 'lib/pry/history.rb', line 64

def history_line_count
  @history.count
end

#loadInteger

Load the input history using `History.loader`.

Returns:

  • (Integer)

    The number of lines loaded



35
36
37
38
39
40
41
# 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

#push(line) ⇒ String Also known as: <<

Add a line to the input history, ignoring blank and duplicate lines.

Parameters:

  • line (String)

Returns:

  • (String)

    The same line that was passed in



46
47
48
49
50
51
52
53
# 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

#restore_default_behaviorObject

Assign the default methods for loading, saving, pushing, and clearing.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 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

#session_line_countFixnum

Returns The number of lines in history from just this session.

Returns:

  • (Fixnum)

    The number of lines in history from just this session.



69
70
71
# File 'lib/pry/history.rb', line 69

def session_line_count
  @history.count - @original_lines
end

#to_aArray<String>

Return an Array containing all stored history.

Returns:

  • (Array<String>)

    An Array containing all lines of history loaded or entered by the user in the current session.



76
77
78
# File 'lib/pry/history.rb', line 76

def to_a
  @history.dup
end