                          Locale-KeyedText
---------------------------------------------------------------------------

2005-12-13   Darren Duncan <perl@DarrenDuncan.net>

    * Locale-KeyedText Release 1.71.0/1.071000 (SVN r1145).

    * New code file versions are: KeyedText.pm 1.71.0.

    * Reverted minimum Perl dependencies to 5.8.1 from 5.8.7, and added a
    Makefile.PL message about preferring the latest Perl version.

    * Added external dependency on Scalar::Util, and updated
    translate_message()'s argument validation to use its blessed() function
    plus the method form of UNIVERSAL's isa() rather than the latter's
    functional form.  The changed version should work more like Perl 6's
    does(), and should permit one to use a mock object that claims to be a
    Locale::KeyedText::Message instead of a genuine one.

    * Updated the examples to use a while-1 loop rather than an
    anon-block-redo loop.

    * Minor README update.

2005-11-24   Darren Duncan <perl@DarrenDuncan.net>

    * Locale-KeyedText Release 1.70.0/1.070000 (SVN r1090).

    * Raised and multiplied the minor version number so that the current
    X.Y.Z formatted version numbers are backwards compatible with the older
    releases in X.YY format, with respect to determing which version
    numbers are larger or smaller.  The new version 1.70.0 is equivalent to
    1.07 under the old format, in which the last release was 1.05.

    * New code file versions are: KeyedText.pm 1.70.0.

    * This release is identical to release 1.6_5 except for the version
    change and a few minor documentation updates and fixes.

2005-11-18   Darren Duncan <perl@DarrenDuncan.net>

    * Locale-KeyedText Release 1.6_5/1.006_005 (SVN r1060).

    * New code file versions are: KeyedText.pm 1.6_5.

    * This release has only small documentation updates and serves partly
    to test CPAN's handling of a NAME split across multiple lines.

    * In KeyedText.pm, updated the NAME and DESCRIPTION, and fleshed out
    the SEE ALSO and ACKNOWLEDGEMENTS.  With the latter two, all the
    details removed between releases 1.6.2 and 1.6_3 were restored.

    * Renamed the ReadMe file to README and updated it also.

2005-11-11   Darren Duncan <perl@DarrenDuncan.net>

    * Locale-KeyedText Release 1.6_4/1.006_004 (SVN r1049).

    * New code file versions are: KeyedText.pm 1.6_4.

    * This distribution now reqires Perl versions >= 5.8.7, up from 5.8.1.

    * Completed fundamental rewrite of KeyedText.pm, such that it can now
    do everything that the pre-rewrite release 1.6.2 could, and has been
    executed to confirm that it works.

    * Restored the 2 as_string() methods that release 1.6_3 removed, under
    the new names as_debug_string(); their output is now better formatted.

    * Reworked translate_message() to use a single for-loop rather than 2
    nested for-loops.

    * Split up the translate_message() method 6 ways, into itself, and the
    new get_set_member_combinations() method, and these Translator utility
    submethods: template_module_is_loaded(), load_template_module(),
    get_template_text_from_loaded_module(),
    interpolate_vars_into_template_text().  This split should make it a lot
    easier to test or extend a core functionality of Locale::KeyedText.

    * Fixed a bug in BUILD() that caused a thrown exception when new() was
    legitimately invoked without a 'msg_vars' argument.

    * Reformatted all package declarations from 'package Foo; {' to '{
    package Foo;', so the correct semantics occur where only declarations
    inside the braces belong to the package.

    * Changed how Text Templates work such that variable names to be
    interpolated must now appear inside "<>" instead of "{}".

    * Other small documentation updates.

    * Added new /examples subdirectory in this distribution, which contains
    2 example programs 'inverter1' and 'inverter2'.  The same code, sans
    bug fixes and minor changes, had previously comprised the 'EXAMPLE
    PROGRAM' POD sections of KeyedText.pm in release 1.6.2, that release
    1.6_3 removed.  The examples are all executed and are known to work.

    * Note that, while Locale::KeyedText can be proven to work by manually
    executing the example programs, the automated test suite in /t still
    does not yet execute anything; such a change is pending.

    * Removed several TODO items, which are now satisfied.

2005-10-27   Darren Duncan <perl@DarrenDuncan.net>

    * Locale-KeyedText Release 1.6_3/1.006_003 (SVN r996).

    * New code file versions are: KeyedText.pm 1.6_3.

    * This release exists only to test some large pending changes for this
    and other distributions against the CPAN infrastructure, to ensure it
    indexes properly and the documentation is extracted as expected.

    * The core modules (KeyedText.pm) have been rewritten from scratch,
    both code and documentation, though the new version was strongly
    influenced by the the previous release, and a lot of the documentation
    was copied over with few changes.  They are definitely incompatible
    with previous releases 1.6.2 and below.  A few more unstable releases
    may follow that are numbered 1.6_x, after which the 1.7.0 release will
    be next stable one, still incompatible with 1.6.2.  It is anticipated
    that all post-1.7.0 releases will be backwards compatible with 1.7.0.

    * "Locale::KeyedText" no longer has any functions and exists just as
    the namesake of this distribution; the new_message() and
    new_translator() wrapper functions are gone.  You now just use the
    previously-wrapped functions Locale::KeyedText::Message->new() and
    Locale::KeyedText::Translator->new() instead.

    * Both new() constructor functions now take named arguments instead of
    positional ones, which should make it easier to add functionality to
    Locale::KeyedText later if one wants to.  But all object methods still
    take positional arguments like before.

    * Changed what kinds of strings are valid to store in the Message Key,
    names of Message Variables, and elements of Set Names and Member Names;
    each can now be any defined and non-empty string.  Also, values of
    Message Variables can be anything at all including references to
    objects.  Also, the Translator constructor arguments must now always be
    array refs, even if either has just a single element.

    * All constructors and methods now throw exceptions on bad input,
    rather than returning undef.

    * Renamed all the accessor methods to be more terse, as follows:
    get_message_key() -> get_msg_key(), get_message_variable[|s]() ->
    get_msg_var[|s](), get_template_[set|member]_names() ->
    get_[set|member]_names().

    * Removed both as_string() methods; they will be replaced later.

    * Added new external dependencies on 'only', 'Readonly', Class::Std,
    Class::Std::Utils.

    * Locale::KeyedText is now implemented as inside-out objects, so the
    privacy of its attributes is now enforced.  Also, KeyedText.pm itself
    now has BUILD() methods internally instead of new() functions.

    * Removed the whole test suite but the compilation test; it will be
    replaced later.  As such, the new Locale::KeyedTest has not yet been
    proven to actually work.

    * Chopped out all the ReadMe file parts that were redundant with
    KeyedText.pm's own POD.  All that remains now is the PREFACE, KEEPING
    UP TO DATE, and SUPPORT sections.  More changes may be pending.

    * Rewrote the TODO file.  Most of its items will be addressed by 1.7.0.

2005-09-28   Darren Duncan <perl@DarrenDuncan.net>

    * Locale-KeyedText Release 1.6.2/1.006002 (SVN r878).

    * New code file versions are: KeyedText.pm 1.6.2.

    * From now on, any ordinary 'use [|only ]Foo' statements that appear
    within *.pm files will be located in different places than before; the
    'use' statements for modules that do not export anything, particularly
    object oriented modules, will appear near the top of the file, above
    all package declarations, but just below the use-pragma statements; the
    'use' statements for modules whose exported functions we are using will
    be placed just below the declarations of each package in which the
    relevant exported functions are used.

    * Removed any line-trailing whitespace from all distribution files.

    * Reformatted all code by swapping various string quoting delimiters.

    * Updated KeyedText.pm to replace all of its 'unless' conditionals with
    equivalent 'if' conditionals.

    * Updated KeyedText.pm to rename all of its 'foreach' loops to 'for'.

    * Updated KeyedText.pm to move its 2 for-loop labels upwards to their
    own lines, and likewise with 2 switch statement labels.

    * Updated KeyedText.pm to reformat all 5 regular expressions so that
    they use the /x flag.

    * Reformatted all code to change any "if( ... ) {" to "if (...) {".

    * Added named constant $EMPTY_STR to KeyedText.pm.

    * In KeyedText.pm, renamed 2 code labels from LOOP to INPUT_LINE.

    * Reformatted all code so that any uses of the named unary operators
    [defined|ref] no longer have parenthesis around their argument.

    * In KeyedText.pm, split up 3 multi-statement lines so each statement
    is on its own line.

    * Updated KeyedText.pm to replace 8 "<condition> or return ...;" each
    with "return ... if <complement-condition>;".

    * Updated KeyedText.pm to replace 4 "<condition> [and|or] [next|last]
    ...;" with "[next|last] ... if ..." like with 'return'.

    * Updated KeyedText.pm to rearrange 7 conditional 'die' statements so
    they have postfix-if conditionals.

    * Reformatted all code, in KeyedText.pm and t_LKT_Util.pm, so that any
    uses of the built-in operators or functions named [bless|chomp|join] no
    longer have parenthesis around their argument lists; either the parens
    were just removed, or they were moved to surround both the
    operator/function name and its arguments.

    * Reformatted all code so that every occurance of the string
    concatenation operator (.) has a space between the operator and each of
    its 2 arguments, rather than their all being in contact.  Also
    reformatted any lines that are split on this operator so the operator
    appears at the start of the second line, rather than the end of the
    first line.

    * Reformatted all of the code comments at the top of KeyedText.pm,
    where its object property names, and constant values, are declared,
    so that all comment lines don't exceed the 75 character line length.

    * In KeyedText.pm and t_LKT_Util.pm, reformatted (3,1) cascading
    ternary statements into aligned columns.

    * In KeyedText.pm split up every remaining code, code comment, and POD
    line that exceeded 75 characters, so they now all fit in that space,
    with the sole exception being the example code in the 2 'EXAMPLE
    PROGRAM' POD sections, which are still too wide.

    * Other miscellaneous code line alignments and splitting.

2005-09-12   Darren Duncan <perl@DarrenDuncan.net>

    * Locale-KeyedText Release 1.6.1/1.006001 (SVN r808).

    * New code file versions are: KeyedText.pm 1.6.1.

    * Updated all POD-containing files to re-wrap any non-indented POD
    paragraphs to a 75 character width, which is 5 less than the 80
    character width they were wrapped to before.  This change should make
    it easier to copy and paste a diff or patch of this documentation into
    an email message, where it is quoted at least once, without any line
    wrapping occurring.  Likewise, these standard documentation files were
    re-wrapped to 75 characters: ReadMe, INSTALL, LGPL|GPL, Changes, TODO.

    * Revised this Changes file to replace all detail entries for releases
    1.04 thru 1.6.0 with a significant release list for the same period;
    also added references to when all 'Rosetta developer release' (#s 1-3)
    were.

2005-09-08   Darren Duncan <perl@DarrenDuncan.net>

    * Locale-KeyedText Release 1.6.0/1.006000 (SVN r787), containing
    Locale::KeyedText 1.6.0, was released on CPAN.  This is the first
    release of this distribution and its modules for which they had 3-part
    version numbers, rather than floating point version numbers.

    * These were the current versions cited by the public announcement for
    Rosetta/SQL-Routine developer release #3.

2005-06-14   Darren Duncan <perl@DarrenDuncan.net>

    * Locale-KeyedText Release 1.05/1.050000, containing Locale::KeyedText
    1.05, was released on CPAN.  This is the last release of this
    distribution and its modules for which they had floating point version
    numbers, rather than 3-part version numbers.

2005-04-03   Darren Duncan <perl@DarrenDuncan.net>

    * Locale-KeyedText Release 1.03, containing Locale::KeyedText 1.03, was
    released on CPAN.

    * These were the current versions cited by the public announcement for
    SQL-Routine/Rosetta developer release #2.

2004-09-23   Darren Duncan <perl@DarrenDuncan.net>

    * Locale-KeyedText Release 1.00, containing Locale::KeyedText 1.00, was
    released on CPAN.  This is the first release of this module following
    its official registration on the Perl 5 Module List.

2004-09-23   Darren Duncan <perl@DarrenDuncan.net>

    The next version of the Module List will list the following module:

      modid:       Locale::KeyedText
      DSLIP:       RdpOl
      description: Refer to user messages in programs by keys
      userid:      DUNCAND (Darren Duncan)
      chapterid:   13 (Internationalization_Locale)
      enteredby:   KSTAR (Kurt D. Starsinic)
      enteredon:   Thu Sep 23 18:35:01 2004 GMT

    The resulting entry will be:

    Locale::
    ::KeyedText       RdpOl Refer to user messages in programs by keys   DUNCAND

2004-08-31   Darren Duncan <perl@DarrenDuncan.net>

    * Locale-KeyedText Release 0.07, containing Locale::KeyedText 0.07, was
    released on CPAN.  This is the last release of this module prior to its
    official registration on the Perl 5 Module List.

2004-08-05   Darren Duncan <perl@DarrenDuncan.net>

    * Locale-KeyedText Release 0.06, containing Locale::KeyedText 0.06, was
    released on CPAN.

    * These were the current versions cited by the public announcement for
    Rosetta/SQL-SyntaxModel developer release #1.

2004-01-15   Darren Duncan <perl@DarrenDuncan.net>

    * Locale-KeyedText Release 0.01, containing Locale::KeyedText 0.01, was
    released on CPAN.  This is the first release of any distribution to
    contain Locale::KeyedText.  This is the first release of any
    distribution for which some of the existing work that became the
    Locale-KeyedText distribution was in the form of executable code, and
    not just design documentation.

2003-09-29   Darren Duncan <perl@DarrenDuncan.net>

    * Began active code development on the proposed Locale::KeyedText
    module.

    * Module based on a template created by h2xs 1.18.

2003-06-03   Darren Duncan <perl@DarrenDuncan.net>

    * Rosetta Release 0.11 was released on CPAN.  This is the first release
    of any distribution where the proposal documentation for
    Locale::KeyedText uses that name for it; it was renamed from
    Rosetta::Locale.

2003-05-28   Darren Duncan <perl@DarrenDuncan.net>

    * Rosetta Release 0.10 was released on CPAN.  This is the last release
    of any distribution for which the documented name of the proposed
    module that became Locale::KeyedText was given the name
    Rosetta::Locale.

2003-03-04   Darren Duncan <perl@DarrenDuncan.net>

    * Rosetta Release 0.05 was released on CPAN.  This is the first release
    of any distribution to contain design documentation that became the
    Locale-KeyedText distribution, specifically in the STRUCTURE and BRIEF
    MODULE LIST portions of the documentation file Rosetta::Framework.  It
    described an upcoming new module to make it easy to separate
    human-readable messages from code, intending that each user language
    can have their own separate human text file.  The proposed core module
    name is Rosetta::Locale.

    * Given that I started publishing details about what became
    Locale::KeyedText here, 2003 is the start of my declared copyright date
    range for Locale::KeyedText.
