h3rald / rawline

RawLine is a 100% Ruby library able to provide some of the functionality offered by ReadLine, plus additional features such as a more intuitive way to bind characters to specific keys or key sequences.
http://www.h3rald.com/rawline
BSD 3-Clause "New" or "Revised" License
35 stars 4 forks source link

= RawLine

RawLine was created to provide a 100% Ruby alternative to the ReadLine library, providing some of its most popular features such as:

== Installation

The simplest method to install RawLine is to install the gem:

gem install rawline

== Usage

Editor initialization:

require 'rawline'
editor = RawLine::Editor.new

Key binding:

editor.bind(:ctrl_z) { editor.undo }
editor.bind(:up_arrow) { editor.history_back }
editor.bind(:ctrl_x) { puts "Exiting..."; exit }

Setup word completion

editor.completion_proc = lambda do |word|
    if word
        ['select', 'update', 'delete', 'debug', 'destroy'].find_all { |e| e.match(/^#{Regexp.escape(word)}/) }
    end
end
editor.completion_append_string = " "

Read input:

editor.read("=> ", true)

== Replacing Readline

Simply include the RawLine (or Rawline) module:

include Rawline

...and you'll get:

readline(prompt, add_history) # RawLine::Editor#read(prompt, add_history)
HISTORY # RawLine::Editor#history
FILENAME_COMPLETION_PROC    # Rawline::Editor#filename_completion_proc
...

but also:

Rawline.editor  # RawLine::Editor

...which opens a world of endless possibilities! ;-)