Sha256: bb72f6237fe2a31f69e3c737d098e704a9b61615c2d5c619e9cffba81705dace

Contents?: true

Size: 997 Bytes

Versions: 2

Compression:

Stored size: 997 Bytes

Contents

require 'ripl/rc/u'
# require 'ripl/rc/history_ivar' # dependency

module Ripl::Rc::MultilineHistoryFile
  include Ripl::Rc::U

  def write_history
    return super if MultilineHistoryFile.disabled?
    @history = history.to_a.map{ |line|
      line.gsub("\n", "#{Ripl.config[:rc_multiline_history_file_token]}\n")
    }
    super
  end

  def before_loop
    return super if MultilineHistoryFile.disabled?
    super # this would initilaize @history to [], nothing we can do here
    buffer = []
    File.exist?(history_file) &&
      IO.readlines(history_file).each{ |line|
        if line.end_with?(
             "#{Ripl.config[:rc_multiline_history_file_token]}\n")
          buffer << line[0...
               -Ripl.config[:rc_multiline_history_file_token].size-1] + "\n"
        else
          history << (buffer.join + line).chomp
          buffer = []
        end
      }
  end
end

Ripl::Shell.include(Ripl::Rc::MultilineHistoryFile)
Ripl.config[:rc_multiline_history_file_token] ||= ' '

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ripl-rc-0.2.3 lib/ripl/rc/multiline_history_file.rb
ripl-rc-0.2.2 lib/ripl/rc/multiline_history_file.rb