contents/rawline.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
-----
title: "RawLine"
content-type: project
subtitle: "A pure-ruby alternative to ReadLine"
github: rawline
inactive: true
home: /rawline/
summary: "A Ruby library which provides a subset of the functionality of the C Readline library. Being implemented in pure Ruby, it gives Ruby developers much more control over key bindings and word completion."
version: 0.3.2
docs: "http://rawline.rubyforge.org"
-----
<p>RawLine is a 100% Ruby alternative to the ReadLine library, providing some of its most popular features such as:</p>
<ul>
<li>Basic line editing operations</li>
<li>Word completion</li>
<li>History Management</li>
<li>Custom key/key sequences bindings</li>
</ul>
<h3>Installation</h3>
<p>The simplest method to install RawLine is to install the gem:</p>
<div><pre><code class="bash">gem install rawline</code></pre></div><h3>Usage</h3>
<p>Editor initialization:</p>
<div><pre><code class="ruby">require 'rawline'
editor = RawLine::Editor.new</code></pre></div><p>Key binding:</p>
<div><pre><code>editor.bind(:ctrl_z) { editor.undo }
editor.bind(:up_arrow) { editor.history_back }
editor.bind(:ctrl_x) { puts "Exiting..."; exit }</code></pre></div><p>Setup word completion</p>
<div><pre><code>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 = " "</code></pre></div><p>Read input:</p>
<div><pre><code>editor.read("=> ", true)</code></pre></div><h3>Replacing Readline</h3>
<p>Simply include the RawLine (or Rawline) module:</p>
<div><pre><code>include Rawline</code></pre></div><p>…and you’ll get:</p>
<div><pre><code class="ruby">readline(prompt, add_history) # RawLine::Editor#read(prompt, add_history)
HISTORY # RawLine::Editor#history
FILENAME_COMPLETION_PROC # Rawline::Editor#filename_completion_proc
# ...</code></pre></div><p>but also:</p>
<div><pre><code class="ruby">Rawline.editor # RawLine::Editor</code></pre></div><p>…which opens a world of endless possibilities! ;-)</p>
<h3>Latest Updates</h3>
<ul><li><a href="/articles/real-world-rawline-usage/">Real-world Rawline usage</a></li>
<li><a href="/articles/rawline-030/">RawLine 0.3.0 released â now with Readline emulation</a></li>
<li><a href="/articles/rawline-020/">New Release: RawLine 0.2.0</a></li>
<li><a href="/articles/inline-name-change/">InLine name change: what’s your opinion?</a></li>
<li><a href="/articles/inline-introduction/">RawLine – a 100% Ruby solution for console inline editing</a></li>
</ul>
|