class TTY::Prompt::Reader::History
A class responsible for storing a history of all lines entered by user when interacting with shell prompt.
@api private
Constants
- DEFAULT_SIZE
Default maximum size
Attributes
cycle[RW]
duplicates[RW]
exclude[RW]
index[R]
max_size[RW]
Set and retrieve the maximum size of the buffer
Public Class Methods
new(max_size = DEFAULT_SIZE, options = {}) { |self| ... }
click to toggle source
Create a History
buffer
param [Integer] max_size
the maximum size for history buffer
param [Hash] options @option options [Boolean] :duplicates
whether or not to store duplicates, true by default
@api public
# File lib/tty/prompt/reader/history.rb, line 42 def initialize(max_size = DEFAULT_SIZE, options = {}) @max_size = max_size @index = 0 @history = [] @duplicates = options.fetch(:duplicates) { true } @exclude = options.fetch(:exclude) { proc {} } @cycle = options.fetch(:cycle) { false } yield self if block_given? end
Public Instance Methods
[](index)
click to toggle source
Return line at the specified index
@raise [IndexError] index out of range
@api public
# File lib/tty/prompt/reader/history.rb, line 115 def [](index) if index < 0 index += @history.size if index < 0 end line = @history[index] if line.nil? raise IndexError, 'invalid index' end line.dup end
clear()
click to toggle source
Empty all history lines
@api public
# File lib/tty/prompt/reader/history.rb, line 138 def clear @history.clear @index = 0 end
each() { |line| ... }
click to toggle source
Iterates over history lines
@api public
# File lib/tty/prompt/reader/history.rb, line 55 def each if block_given? @history.each { |line| yield line } else @history.to_enum end end
get()
click to toggle source
Get current line
@api public
# File lib/tty/prompt/reader/history.rb, line 129 def get return if size.zero? self[@index] end
next()
click to toggle source
Move the pointer to the next line in the history
@api public
# File lib/tty/prompt/reader/history.rb, line 83 def next return if size.zero? if @index == size - 1 @index = 0 if @cycle else @index += 1 end end
next?()
click to toggle source
# File lib/tty/prompt/reader/history.rb, line 92 def next? size > 0 && !(@index == size - 1 && !@cycle) end
previous()
click to toggle source
Move the pointer to the previous line in the history
# File lib/tty/prompt/reader/history.rb, line 97 def previous return if size.zero? if @index.zero? @index = size - 1 if @cycle else @index -= 1 end end
previous?()
click to toggle source
# File lib/tty/prompt/reader/history.rb, line 106 def previous? size > 0 && !(@index < 0 && !@cycle) end
push(line)
click to toggle source
Add the last typed line to history buffer
@param [String] line
@api public
# File lib/tty/prompt/reader/history.rb, line 68 def push(line) @history.delete(line) unless @duplicates return if line.to_s.empty? || @exclude[line] @history.shift if size >= max_size @history << line @index = @history.size - 1 self end
Also aliased as: <<