This release brings three new features: an echo setting (for
passwords), case changing controls for answers, and confirmation
questions. As always, using these features is trivial. Here are a
couple of simple examples:
pass = ask("Password? ") { |q| q.echo = false }
file = ask("File to delete? ") { |q| q.confirm = true }
See documentation and examples for more details.
If anyone uses this, feedback is welcome
(ja...@grayproductions.net). I do have a TODO list of features I
would like to add, but I'm also open to suggestions of how to grow
the project and make in useful to all.
If you have any trouble with character reading or echo, especially on
Windows, please let me know.
What is HighLine?
-----------------
(from the README)
HighLine was designed to ease the tedious tasks of doing console
input and output with low-level methods like gets() and puts().
HighLine provides a robust system for requesting data from a user,
without needing to code all the error checking and validation rules
and without needing to convert the typed Strings into what your
program really needs. Just tell HighLine what you're after, and let
it do all the work.
What's new in this release?
---------------------------
(highlights from the CHANGELOG)
* Implemented echo=() for HighLine::Question objects, primarily to
make fetching passwords trivial.
* Implemented case=() for HighLine::Question objects to provide
character case
conversions on given answers. Can be set to :up, :down,
or :capitalize.
* 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.
Plus documentation and examples for the new features.
Where can I learn more?
-----------------------
HighLine is hosted on RubyForge.
Project page: http://rubyforge.org/projects/highline/
Documentation: http://highline.rubyforge.org/
Downloads: http://rubyforge.org/frs/?group_id=683
How do I get HighLine?
----------------------
HighLine is a gem, so as long as you have RubyGems installed it's as
simple as:
$ sudo gem install highline
If you need to install RubyGems, you can download it from:
http://rubyforge.org/frs/?group_id=126&release_id=1885
HighLine can also be installed manually. Just download the latest
release and follow the instructions in INSTALL:
http://rubyforge.org/frs/?group_id=683&release_id=2158
James Edward Gray II
> This release brings three new features: an echo setting (for
> passwords)
Darn it, forgot credit where credit is due!
The above feature was inspired and made possible by extensive help
from Vincent Foley, Ryan Leavengood, and Andre Nathan. Thank you all!
James Edward Gray II
> HighLine 0.5.0 Released
> =======================
>
Hey James & friends-
I wanted to thank you for this great library. I have a project
that this will be perfect for. Great Job!
Thanks-
-Ezra
More flexible might be
q.echo = true #=> echo
q.echo = false #=> don't echo
q.echo = char #=> echo char for every keypress (e.g. '*')
martin
> More flexible might be
>
> q.echo = true #=> echo
> q.echo = false #=> don't echo
> q.echo = char #=> echo char for every keypress (e.g. '*')
Great idea. Added it to the TODO. Thanks.
James Edward Gray II
Greg explained the process pretty well in his response. As he said,
check out the CVS, change some code, then use the "cvs diff" command
to generate a patch file and send it to me in an email. It's not hard.
Getting familiar with the code it probably the only tricky step, but
I try to keep it clean and well commented. HighLine is built with a
practice called Test Driven Development, so the test files (in the
test/ directory) cover every single feature I've added. They should
help you make sense of things. From the root project directory, you
can run those tests with "rake" (if you have Rake installed) or "ruby
test/ts_all.rb".
This also means that any feature added to HighLine needs to come with
tests that cover it. Write those first, I say, so you can see what
you're trying to implement. Then go tinker until the tests start
passing.
Currently, the two files you would be adding features to are lib/
highline.rb and lib/highline/question.rb. highline.rb covers
terminal encapsulation features, while question.rb stores the state
of each question. They work in tandem to accomplish some things.
Finally, don't be afraid to ask questions. I won't bite. The TODO
probably makes more sense to me than anyone else, for example, so ask
me to translate if needed.
Thanks for the interest!
James Edward Gray II