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.



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

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

#filter(history) ⇒ Array<String>

Filter the history with the histignore options

Returns:

  • (Array<String>)

    An array containing all the lines that are not included in the histignore.



90
91
92
# File 'lib/pry/history.rb', line 90

def filter(history)
  history.select { |l| l unless should_ignore?(l) }
end

#history_line_countFixnum

Returns The number of lines in history.

Returns:

  • (Fixnum)

    The number of lines in history.



71
72
73
# File 'lib/pry/history.rb', line 71

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
42
43
# File 'lib/pry/history.rb', line 35

def load
  @loader.call do |line|
    next if invalid_readline_line?(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



48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/pry/history.rb', line 48

def push(line)
  empty_or_invalid_line = line.empty? || invalid_readline_line?(line)

  unless empty_or_invalid_line || (@history.last && line == @history.last)
    @pusher.call(line)
    @history << line
    if !should_ignore?(line) && Pry.config.history.should_save
      @saver.call(line)
    end
  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.



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

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.



83
84
85
# File 'lib/pry/history.rb', line 83

def to_a
  @history.dup
end