Copyright © 2001,2003 Akinori MUSHA <knu@iDaemons.org>
All rights reserved. You can redistribute and/or modify it under the same terms as Ruby.
$Idaemons: /home/cvs/rb/abbrev.rb,v 1.2 2001/05/30 09:37:45 knu Exp $ $RoughId: abbrev.rb,v 1.4 2003/10/14 19:45:42 knu Exp $ $Id$ Calculate the set of unique abbreviations for a given set of strings.
require 'abbrev' require 'pp' pp Abbrev::abbrev(['ruby', 'rules']).sort
Generates:
[["rub", "ruby"], ["ruby", "ruby"], ["rul", "rules"], ["rule", "rules"], ["rules", "rules"]]
Useful scenario
This can be quite useful, for example when writing a command line script which takes a number of options.
Example
Let’s say you want to make a script that can make the basic CRUD operations. So want to be able to call it like this from the command line:
> my_script create > my_script delete
The following script allows you to use any abbreviated command as long as it is unambiguous.
# my_script.rb require 'abbrev' command = ARGV.first actions = %w[create read update delete] mappings = Abbrev::abbrev(actions) puts mappings[command]
That means you can call it like this:
> my_script cr > my_script d
And it will print:
create delete