class Pry::Command::Hist

Public Instance Methods

options(opt) click to toggle source
# File lib/pry/commands/hist.rb, line 21
def options(opt)
  opt.on :H, :head,   "Display the first N items", :optional_argument => true, :as => Integer
  opt.on :T, :tail,   "Display the last N items", :optional_argument => true, :as => Integer
  opt.on :s, :show,   "Show the given range of lines", :optional_argument => true, :as => Range
  opt.on :G, :grep,   "Show lines matching the given pattern", :argument => true, :as => String
  opt.on :c, :clear , "Clear the current session's history"
  opt.on :r, :replay, "Replay a line or range of lines", :argument => true, :as => Range
  opt.on     :save,   "Save history to a file", :argument => true, :as => Range
  opt.on :e, :'exclude-pry', "Exclude Pry commands from the history"
  opt.on :n, :'no-numbers',  "Omit line numbers"
  opt.on :f, :flood,         "Do not use a pager to view text longer than one screen"
end
process() click to toggle source
# File lib/pry/commands/hist.rb, line 34
def process
  @history = Pry::Code(Pry.history.to_a)

  if opts.present?(:show)
    @history = @history.between(opts[:show])
  end

  if opts.present?(:grep)
    @history = @history.grep(opts[:grep])
  end

  @history = case
    when opts.present?(:head)
      @history.take_lines(1, opts[:head] || 10)
    when opts.present?(:tail)
      @history.take_lines(-(opts[:tail] || 10), opts[:tail] || 10)
    when opts.present?(:show)
      @history.between(opts[:show])
    else
      @history
    end

  if opts.present?(:'exclude-pry')
    @history = @history.select { |l, ln| !command_set.valid_command?(l) }
  end

  if opts.present?(:save)
    process_save
  elsif opts.present?(:clear)
    process_clear
  elsif opts.present?(:replay)
    process_replay
  else
    process_display
  end
end