--------------------------------------------------------------------------------- RELEASE 0.6 (Character Flags FINALLY) --------------------------------------------------------------------------------- * added top-level flag declaration 'character_flag' * made 'keyword' an optional by default --------------------------------------------------------------------------------- RELEASE 0.5 (Features getting close to done) --------------------------------------------------------------------------------- * added top-level flag declaration 'keyword' * added unit test for this new functionality * added automatically generated ?methods? for alternate forms of flags * made sure not to try generating methods from non alphabetic flag names * Added ability to acces values via hash lookup (see Example 4) --------------------------------------------------------------------------------- RELEASE 0.4 (Internal Maintenance Mainly) --------------------------------------------------------------------------------- * Added internal version number * Addded experimental ability to define flags off of the fields of a pre-existing object. Some problems with visibility will keep this experimental for now. See the method using_object * Spelling fix ups * Aliased flag_properties to properties. For ease of use. * Added some large section-defining comments * Renamed internal EachFlag variables from 'foo_val' to 'the_foo' * Coined terminology for Application Programmer's Syntax -- Top-Level Flag Declarers -- Clause-Level Flag Modifier --------------------------------------------------------------------------------- RELEASE 0.3 --------------------------------------------------------------------------------- * Fixed a bug that globally changed the state of all modules when a user chose to use the 'module SomeThing extend OptiFlag::Flagset(:flag_symbol => "/")' syntax. Required some singleton class trickeration and module cloning. * Changed all references from OptiFlag::FlagestDefinitions to OptiFlag::Flagset which is shorter and therefore easier to use (not everyone has dynamic-abbrev in emacs enabled to make typing easy) * Started changing the design of printing help so that users can register help-formatting bundles to do their own rendering of usage and error messages * Changed the functionality of the 'usage_flag' option to be of either zero or one arity. With standard zero arity, the help will print out the standard help/usage message. With an arity of one, the help/usage flag will assume that the argument is another flag for which we will print extended usage (example: '-h dir' will print the help message just for the '-dir' flag) * Fixed another nasty global-state bug (the perils of using '@' syntax with modules)... This one wasn't needed -- it would only affect those people who chose to parse an array of strings a 2nd and 3rd time, and I was considering mandating that the parse method could only be called once... but since my tests relied on multiple parses, I decided to fix it just to make the test suites continually easy to write. * Added a new top-level declarative form: 'optional_switch_flag' which is an optional flag with zero arity. (I needed this one for myself) * A few more tests were added: -- tc_basic_optional_flag.rb -- tc_bug_two.rb * Wrote some XSLT and a ruby-script to autogenerate the site at http://optiflag.rubyforge.org * Added a warning generation system for things that are not errors -- extra parameters left over (implemented) -- potential consumption of an optional flag as value to a flag with >0 arity. (example: '-dir -verbose' where '-dir' takes on argument and '-verbose' is optional. In this case the '-verbose' would be consumed as the value unless warning mode was on) --------------------------------------------------------------------------------- RELEASE 0.2 (5/23/2006) --------------------------------------------------------------------------------- * The following features are implemented: * required and optional flags * ability to change flag arity from 0 to N * flag value validation -- by set membership -- by regular expression * flag value translation (pre and post validation) * auto help * auto error checking * usage and extended usage flags * universal flag symbol change * case by case flag symbol change (both normal and long form) * alternate forms for normal flag * alternate form for long form flag * auto-generated property-type methods added to ARGV for flag values post-parsing * sub-clause verbs -- 'description' -- 'arity' -- 'no_args' -- 'one_arg' -- 'two_args' -- 'long_form' -- 'translate' -- 'value_matches' -- 'value_in_set' -- 'required' -- 'optional' -- 'alternate_forms' -- 'long_form' -- 'dash_symbol' -- 'long_dash_symbol' * Added a series of Example Files