Change Log
Below is a complete listing of changes for each revision of HighLine.
1.5.0
- Fixed a bug that would prevent Readline from showing all completions.
(reported by Yaohan Chen)
- Added the ability to pass a block to HighLine#agree(). (patch by
Yaohan Chen)
1.4.0
- Made the code grabbing terminal size a little more cross-platform by adding
support for Solaris. (patch by Ronald Braswell and Coey Minear)
1.2.9
- Additional work on the backspacing issue. (patch by Jeremy Hinegardner)
- Fixed Readline prompt bug. (patch by Jeremy Hinegardner)
1.2.8
- Fixed backspacing past the prompt and interrupting a prompt bugs. (patch by
Jeremy Hinegardner)
1.2.7
- Fixed the stty indent bug.
- Fixed the echo backspace bug.
- Added HighLine::track_eof=() setting to work are threaded eof?() calls.
1.2.6
Patch by Jeremy Hinegardner:
- Added ColorScheme support.
- Added HighLine::Question.overwrite mode.
- Various documentation fixes.
1.2.5
- Really fixed the bug I tried to fix in 1.2.4.
1.2.4
- Fixed a crash causing bug when using menus, reported by Patrick Hof.
1.2.3
- Treat Cygwin like a Posix OS, instead of a native Windows environment.
1.2.2
- Minor documentation corrections.
- Applied Thomas Werschleiln‘s patch to fix termio buffering on
Solaris.
- Applied Justin Bailey‘s patch to allow canceling paged output.
- Fixed a documentation bug in the description of character case settings.
- Added a notice about termios in HighLine::Question#echo.
- Finally working around the infamous "fast typing" bug
1.2.1
- Applied Justin Bailey‘s fix for the page_print() infinite loop bug.
- Made a SystemExtensions module to expose OS level functionality other
libraries may want to access.
- Publicly exposed the get_character() method, per user requests.
- Added terminal_size(), output_cols(), and output_rows() methods.
- Added :auto setting for warp_at=() and page_at=().
1.2.0
- Improved RubyForge and gem spec project descriptions.
- Added basic examples to README.
- Added a VERSION constant.
- Added support for hidden menu commands.
- Added Object.or_ask() when
using highline/import.
1.0.4
- Moved the HighLine project to
Subversion.
- HighLine‘s color escapes can
now be disabled.
- Fixed EOF bug introduced in the last release.
- Updated HighLine web page.
- Moved to a forked development/stable version numbering.
1.0.2
- Removed old and broken help tests.
- Fixed test case typo found by David A. Black.
- Added ERb escapes processing to lists, for coloring list items. Color
escapes do not add to list element size.
- HighLine now throws EOFError when
input is exhausted.
1.0.1
- Minor bug fix: Moved help initialization to before response building, so
help would show up in the default responses.
1.0.0
- Fixed documentation typo pointed out by Gavin Kistner.
- Added gather = … option to question for fetching entire
Arrays or Hashes filled with answers. You can set gather to a
count of answers to collect, a String or Regexp matching the end of input,
or a Hash where each key can be used in a new question.
- Added File support to HighLine.ask(). You can specify
a directory and a glob pattern that combine into a list
of file choices the user can select from. You can choose to receive the
user‘s answer as an open filehandle or as a Pathname object.
- Added Readline support for history and editing.
- Added tab completion for menu and file selection selection (requires
Readline).
- Added an optional character limit for input.
- Added a complete help system to HighLine‘s shell menu creation
tools.
0.6.1
- Removed termios dependancy in gem, to fix Windows’ install.
0.6.0
- Implemented HighLine.choose() for menu
handling.
- Provided shortcut choose(item1, item2, …) for simple menus.
- Allowed Ruby code to be attached to each menu item, to create a complete
menu solution.
- Provided for total customization of the menu layout.
- Allowed for menu selection by index, name or both.
- Added a shell mode to allow menu selection with additional details
following the name.
- Added a list() utility method that can be invoked just like color(). It can
layout Arrays for you in any output in the modes :columns_across,
:columns_down, :inline and :rows
- Added support for echo = "*" style settings. User code
can now choose the echo character this way.
- Modified HighLine to user the
"termios" library for character input, if available. Will return
to old behavior (using "stty"), if "termios" cannot be
loaded.
- Improved "stty" state restoring code.
- Fixed "stty" code to handle interrupt signals.
- Improved the default auto-complete error message and exposed this message
through the responses interface as :no_completion.
0.5.0
- Implemented echo = false for HighLine::Question objects,
primarily to make fetching passwords trivial.
- Fixed an auto-complete bug that could cause a crash when the user gave an
answer that didn‘t complete to any valid choice.
- Implemented case for HighLine::Question objects to
provide character case conversions on given answers. Can be set to
:up, :down, or :capitalize.
- Exposed @answer to the response system, to allow response that are
aware of incorrect input.
- Implemented confirm for HighLine::Question objects to
allow for verification for sensitive user choices. If set to true,
user will have to answer an "Are you sure? " question. Can also
be set to the question to confirm with the user.
0.4.0
- Added @wrap_at and @page_at settings and accessors to HighLine, to control text flow.
- Implemented line wrapping with adjustable limit.
- Implemented paged printing with adjustable limit.
0.3.0
- Added support for installing with setup.rb.
- All output is now treated as an ERb sequence, allowing Ruby code to be
embedded in output strings.
- Added support for ANSI color sequences in say(). (And everything else by
extension.)
- Added whitespace handling for answers. Can be set to :strip,
:chomp, :collapse, :strip_and_collapse,
:chomp_and_collapse, :remove, or :none.
- Exposed question details to ERb completion through @question, to allow for
intelligent responses.
- Simplified HighLine internals using
@question.
- Added support for fetching single character input either with getc() or HighLine‘s own cross-platform
terminal input routine.
- Improved type conversion to handle user defined classes.
0.2.0
- Added Unit Tests to cover an already fixed output bug in the future.
- Added Rakefile and setup test action (default).
- Renamed HighLine::Answer to HighLine::Question to better
illustrate its role.
- Renamed fetch_line() to get_response() to better define its goal.
- Simplified explain_error in terms of the Question object.
- Renamed accept?() to in_range?() to better define purpose.
- Reworked valid?() into valid_answer?() to better fit Question object.
- Reworked @member into @in, to make it easier to remember
and switched implementation to include?().
- Added range checks for @above and @below.
- Fixed the bug causing ask() to swallow NoMethodErrors.
- Rolled ask_on_error() into responses.
- Redirected imports to Kernel from Object.
- Added support for validate = lambda { … }.
- Added default answer support.
- Fixed bug that caused ask() to die with an empty question.
- Added complete documentation.
- Improve the implemetation of agree() to be the intended "yes" or
"no" only question.
- Added Rake tasks for documentation and packaging.
- Moved project to RubyForge.
0.1.0