[ANN] HighLine 0.5.0

  • Thread starter James Edward Gray II
  • Start date
J

James Edward Gray II

HighLine 0.5.0 Released
=======================

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
([email protected]). 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
 
J

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
 
E

Ezra Zygmuntowicz

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
 
M

Martin DeMello

James Edward Gray II said:
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 }

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
 
V

Vincent Foley

I would really be interested in contributing some code. I'm not
exactly sure how to do that though, although I have done Ruby coding
for a while now, I never helped on somebody else's project.
 
G

greg7224

Well, when I asked James, he told me to hop onto the CVS, read the TODO
file, and fire him a patch via email when I was ready. Though he ended
up finishing up word-wrap on his own, I helped him out a bit, and it's
as easy as grabbing the source from the CVS anonymously, picking
something you like from the TODO list, and emailing him your patch.
Bonus points if you write up your own unit tests for him. His code is
well documented and easy to work with, so just hit up the CVS on
rubyforge and I'm sure he'll be happy to accept a solution if you get
something working.
 
J

James Edward Gray II

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
 
J

James Edward Gray II

I would really be interested in contributing some code. I'm not
exactly sure how to do that though, although I have done Ruby coding
for a while now, I never helped on somebody else's project.

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,599
Members
45,175
Latest member
Vinay Kumar_ Nevatia
Top