= Change Log
Below is a complete listing of changes for each revision of HighLine.
== 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
* Initial release as the solution to
{Ruby Quiz #29}[http://www.rubyquiz.com/quiz29.html].