Skip to content

A Ruby wrapper around the small self-contained alternative to Readline and Libedit called Linenoise (https://github.com/antirez/linenoise).

License

Notifications You must be signed in to change notification settings

kyrylo/linenoise-rb

Repository files navigation

Linenoise Ruby

CircleCI Gem Version Documentation Status Downloads

Introduction

The Linenoise gem is a wrapper around the small self-contained alternative to Readline and Libedit called Linenoise.

Features

  • History support
  • Completion
  • Hints (suggestions at the right of the prompt as you type)
  • Single and multiline editing mode with the usual key bindings

Installation

Bundler

Add the Linenoise gem to your Gemfile:

gem 'linenoise', '~> 1.1'

Manual

Invoke the following command from your terminal:

gem install linenoise

Examples

Basic example

require 'linenoise'

while buf = Linenoise.linenoise('> ')
  p buf
end

Completion

require 'linenoise'

LIST = %w[
  search download open help history quit url next clear prev past
].freeze

Linenoise.completion_proc = proc do |input|
  LIST.grep(/\A#{Regexp.escape(input)}/)
end

while line = Linenoise.linenoise('> ')
  p line
end

Hints

require 'linenoise'

Linenoise.hint_proc = proc do |input|
  case input
  when /git show/
    ' [<options>] [<object>...]'
  when /git log/
    ' [<options>] [<revision range>]'
  else
    ' --help'
  end
end

while line = Linenoise.linenoise('> ')
  p line
end

More examples and full API explanation is available on the documentation page.

Development

Running tests

bundle exec rake compile spec

Launching development console

bundle exec rake compile console

Contact

In case you have a problem, question or a bug report, feel free to:

License

The project uses the MIT License. See LICENSE.md for details.

About

A Ruby wrapper around the small self-contained alternative to Readline and Libedit called Linenoise (https://github.com/antirez/linenoise).

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published