2002-12-01 Darren Duncan <perl@DarrenDuncan.net>
* Release 1.08.
* The modules Data::MultiValuedHash and CGI::MultiValuedHash are now being
distributed separately from each other, largely so they can be maintained as
independant entities. The 2 new distributions, Data-MultiValuedHash-1.08
and CGI-MultiValuedHash-1.08, replace the older MultiValuedHash-1.0703.
That said, to use the CGI module you still need the Data module, since the
first is a subclass of the second.
* As part of the above separation, each of the new distributions has a copy
of all the old supporting files with alterations to focus on the one module
it is staying with: ChangeLog, Makefile.PL, MANIFEST, ReadMe, test.pl.
Both ChangeLog copies are identical for all releases before and including
1.08 (applying to both modules), but will differ for any later releases.
* Minor bug fix release to remove any 'uninitialized value' warnings that
appear when running the test suite with the -w option. All of the
uncovered warnings were in the Data::MultiValuedHash module, of which the
test suite has already covered every method and method argument variation
(but the module had correct output before).
* However, many of the methods in CGI::MultiValuedHash are not yet included
in the test suite, and may conceal bugs that a thorough suite would expose:
to_file(), from_file(), to_html_encoded_table(),
to_html_encoded_hidden_fields(), trim_bounding_whitespace(),
batch_to_file(), batch_from_file(). That said, many of those methods have
been used in a production environment without problems to date.
These methods *have* been tested, with all their argument variations:
to_url_encoded_string(), from_url_encoded_string().
* Updated the HTML generating methods in CGI::MultiValuedHash,
to_html_encoded_table() and to_html_encoded_hidden_fields(), to add support
for the stricter requirements of W3C's XHTML standard where possible. See
"http://www.w3.org/TR/xhtml1" for details on how this standard compares to
HTML 4. Mainly this means that the HTML now has lowercased tag and
attribute names, and solitary tags like 'input' and 'br' have a trailing
slash in them (eg: '<br />'). However, the changes should be
backwards-compatible with older user agents (web browsers). A bug was also
fixed in the first method involving a mis-matched pair of 'table' tags.
* Minor documentation fix in Data::MultiValuedHash for the splice() method;
the new version indicates which arguments are optional.
* Several documentation updates in the README file; one is so that someone
can get an idea what this module does after looking only at the README.
2001-07-16 Darren Duncan <perl@DarrenDuncan.net>
* Release 1.0703.
* This minor release deals with some more "ambiguous call" warnings of the
sort that release 1.07 addressed, since I didn't get to them all in 1.0702.
Both modules are now at version 1.0703. In CGI::MultiValuedHash, the POD
was updated in Synopsis and The Default File Format; for the latter case, I
hope that I removed ambiguity regarding how compatible my default file
format is with Boulderio. Thanks to Jonathan Snyder
<jonathan@mail.method.com> for alerting me to the fixed problems.
2001-05-28 Darren Duncan <perl@DarrenDuncan.net>
* Release 1.0702.
* This minor release deals with some more "ambiguous call" warnings of the
sort that release 1.07 addressed, since I didn't get to them all that time.
There are also minor POD updates in this release. Both modules are now at
version 1.0702.
2001-04-20 Darren Duncan <perl@DarrenDuncan.net>
* Release 1.0701.
* This release should take care of some install problems because the modules
are now inside folders like lib/CGI and lib/Data whereas they were just in
CGI and Data before. Thanks to Jost (kriegjcb@CMC01SE.rz.ruhr-uni-bochum.de)
for alerting me to this problem. I'm afraid I still don't know much about
Makefiles.
2001-04-12 Darren Duncan <perl@DarrenDuncan.net>
* Release 1.07.
* This release should take care of a number of warnings like
"Ambiguous call resolved as CORE::values()" which appear on some systems
when -w is used. These spring from the fact that Data::MultiValuedHash
has methods with the same names as the following built-in functions: keys(),
values(), exists(), push(), unshift(), pop(), shift(), delete(). To fix
this, I have changed all such calls to built-in functions so that they
explicitely say CORE::*. However, the modules were working before, as Perl
seemed to be resolving the ambiguity in the correct way.
* Thanks to Geir Johannessen (geir.johannessen@nextra.com) for alerting me
to the above warnings.
2001-03-17 Darren Duncan <perl@DarrenDuncan.net>
* Release 1.06.
* This release is the first one that includes the CPAN standard file
"test.pl", which was created following the previous release. The install
instructions in the ReadMe file were updated to reflect that "make test"
should now work. "Test.pl" was used to discover several bugs that my
production use of the modules didn't; their fixes are detailed below.
* Removed gratuitous arguments from clone() that allowed one to specify a
subset of keys for the clone to have. This way, clone() is fully standard
and does what one would intuitively expect, namely make an identical copy.
* Added new method fetch_mvh() to Data::MultiValuedHash which replaces the
functionality dropped from clone(). fetch_mvh() has the same calling
conventions as fetch_all(), except that an MVH object is returned instead of
a literal hash of array refs.
* Fixed bug in Data::MultiValuedHash where the store_all() method didn't
properly handle the import of case-sensitive keys into a case-insensitive
MVH. Specifically, keys were added but associated values were lost.
* Fixed bug in Data::MultiValuedHash where the splice() method didn't
properly handle missing LENGTH arguments. That is, if one called
"splice( KEY, -1 )" then that should remove the last element of the array,
but it instead acted like LENGTH had a value of 0, so nothing was removed
or returned. This issue appears to be related to Perl's built-in splice
function, which treats "splice( KEY, 1 )" and "splice( KEY, 1, undef )" or
"splice( KEY, 1, () )" differently. So the fix for my splice() method
involved having two separate calls to Perl's splice() depending on whether
its OFFSET argument is defined or not.
* Added several new POD sections to the end of CGI::MultiValuedHash that give
an overview of using url-encoding/decoding and file-import/export features,
mainly describing what the file format or encoding formats look like.
2001-03-14 Darren Duncan <perl@DarrenDuncan.net>
* Release 1.0501.
* Fixed bug in CGI::MultiValuedHash where the method to_html_encoded_table()
was misnamed as to_html_encoded_hidden_fields(), which is the same as a
separate method that also exists. This module's version was increased to
1.0501 to reflect the change.
2001-03-08 Darren Duncan <perl@DarrenDuncan.net>
* Release 1.05.
* Added method splice() to Data::MultiValuedHash so as to round out the set
of standard array manipulation functions.
* Added static function batch_new() to Data::HashOfArrays which emulates the
symantecs of calling new() multiple times with a list of initializers; as
many new MVH objects are made as there are elements in the list.
* Added programmer documentation to the private method
_reduce_hash_from_subset() so people know how to use this method. Due to its
private nature, it is not covered in the POD.
* Added static functions batch_to_file() and batch_from_file() to
CGI::MultiValuedHash so that an entire list of MVH objects can be written to
or read from a file at once. Symantecs are similar to calling the to_file()
and from_file() methods. batch_from_file() will read to the end of the file
by default, but can be restricted by an argument to stop after a certain
number of objects are retrieved.
2001-03-07 Darren Duncan <perl@DarrenDuncan.net>
* Release 1.04.
* This release is the first one that includes the CPAN standard files
"Makefile.PL" and "MANIFEST", which were all created following
the previous release. The content of "Manifest" was previously inside the
"ReadMe" file. Improved the install instructions in my ReadMe file.
* Added a hook to the initialize() method in Data::MultiValuedHash for
handling initializers that aren't hashes. CGI::MultiValuedHash now uses
that hook for handling more initializer types, rather than overloading all
of initialize().
* Many small changes were made to methods in Data::MultiValuedHash so that
they work better or the code is more readable.
* Added "Method Relationship Overview" section to the POD of Data::MVH.
* Changed the ignores_case() method so that you can now change that property.
When changing this property from false to true, any existing keys are
lowercased, which can not be reversed (except from a backup).
* Added method fetch_hash() to Data::MVH which returns a hash containing
all of the keys and one for each; values are all taken from the array
index specified with an argument. fetch_first() and fetch_last() have
been changed to use this to implement themselves, since they are the same
except with implicit indexes of 0 or -1.
* Added INDEXES argument to fetch() and fetch_all() so that a caller can
restrict a range of values to be returned for each key, much as the KEYS
argument of some methods restrict which keys are returned; the new argument
does not have a COMPLEMENT modifier, however.
* Added a method to CGI::MultiValuedHash for outputting the object's keys
and values in an HTML table.
2001-01-03 Darren Duncan <perl@DarrenDuncan.net>
* Release 1.03.
* This release is the first one following official registrations with
"The Perl 5 Module List". The updated entries would look like this:
Data::
::MultiValuedHash bdpO Hash whose keys have multiple ordered values DUNCAND
CGI::
::MultiValuedHash bdpO Store and manipulate url-encoded data DUNCAND
* This release contains my "Data::MultiValuedHash" and "CGI::MultiValuedHash"
modules, which were previously a part of the following distributions
under the temporary name of "CGI::HashOfArrays":
- "libdwg": v1.0 r2000-07-23, v1.11 r2000-08-23
- "CGI-FormGenerator": v0.9 r2000-09-04, v0.9201 r2000-12-26
* These modules require Perl version 5.004.
* Code changes since CGI::HashOfArrays consist mainly in its separation into
two modules, named above. This took care of a longstanding logistical
problem concerning whether the module was a generic data structure
or a tool for encoding/decoding CGI data. The CGI:: module is a subclass of
the Data:: module, so you can use it like you used the old module.
Thanks to Johan Vromans <jvromans@squirrel.nl> for suggesting the split.
* The POD also received significant updates. Thanks to Steve Benson
<steve.benson@stanford.edu> for suggesting improvements to initialize().
* Added method store_value() to Data::MultiValuedHash.
2000-12-26 Darren Duncan <perl@DarrenDuncan.net>
* CGI-FormGenerator 0.9201, the last version of any distribution to include
CGI::HashOfArrays, was released.
2000-07-23 Darren Duncan <perl@DarrenDuncan.net>
* libdwg 1.0, the first version of any distribution to include
CGI::HashOfArrays, was released on CPAN.
2000-04-21 Darren Duncan <perl@DarrenDuncan.net>
* Completed primary development on this module.
2000-01-28 Darren Duncan <perl@DarrenDuncan.net>
* Began development on the final version of this module.
* Module based on a template created by h2xs 1.18.
1999-07-29 thru 1999-11-13
* Worked on prototype of code that ended up in this module.