Locale-KeyedText
---------------------------------------------------------------------------
2006-05-01 Darren Duncan <perl@DarrenDuncan.net>
* Locale-KeyedText Release 1.73.0/1.073000 (SVN r1261).
* New code file versions are: KeyedText.pm 1.73.0 and en.pm 1.0.1.
* Updated external dependency on Class::Std to v0.0.8 from v0.0.4.
* In the Makefile.PL only, specified that the minimum required
'version' version is v0.57.
* Added a warning to Makefile.PL so that it requests users would ignore
test failures of the depended-on 'only' module. Also removed the
warning about preferring the latest Perl 5.8.x version.
* Changed the prerequisites list in Makefile.PL so that all minimum
versions are specified as floating point numbers, and none as strings;
as a result, the prerequisites check by MakeMaker should work correctly
with installed modules that satisfy the requirements but don't match
the specific versions mentioned.
* In KeyedText.pm, added a export_as_hash() method for each class, so
that there is a uniform way to either clone the objects or prepare them
for freezing such as with a serialization module, if one wanted to do
that; the thawed results can be fed directly as new() arguments.
* Minor fix to each MyApp.pl in examples/; changed a "+@foo == 0" to
"@foo == 0" in each; the actual behaviour didn't change, though.
* In KeyedText.pm and en.pm both, minor SEE ALSO update.
2006-02-01 Darren Duncan <perl@DarrenDuncan.net>
* Locale-KeyedText Release 1.72.1/1.072001 (SVN r1203).
* This release is concurrently available in both Perl 5 and Perl 6
versions. The Perl 5 version is in the same distribution as this
Changes file. The Perl 6 version is bundled with Pugs-6.2.11 (released
on 2006-02-01), in its ext/Locale-KeyedText/ subdirectory.
* New code file versions are: KeyedText.pm 1.72.1; unchanged code file
versions are: en.pm 1.0.0.
* In KeyedText.pm, updated the INTERFACE pod section to replaced many
occurances of 'argument' with 'parameter', which is the more
technically correct term in those situations. Also corrected the SEE
ALSO pod, since the SQL::Routine namespace no longer exists.
* In the README file, rewrote the second paragraph of KEEPING UP TO
DATE so that it is more accurate and up to date; there is no longer a
Rosetta-Incubator pseudo distribution in my Subversion repositories.
* Minor Makefile.PL update to cite Perl 5.8.8 rather than 5.8.7 as the
newest existing version.
* Synchronized common headings for these files: Changes, README, TODO.
* There were no other changes of any kind.
2006-01-02 Darren Duncan <perl@DarrenDuncan.net>
* Locale-KeyedText Release 1.72.0/1.072000 (SVN r1162).
* New code file versions are: KeyedText.pm 1.72.0.
* Added new module Locale::KeyedText::L::en, version 1.0.0, in
preparation for Locale::KeyedText to throw its own exceptions as
Message objects. Updated t/LKT_00_Compile.t and MANIFEST accordingly.
* In KeyedText.pm, replaced all 10 occurances of the literal empty
string ('') with the already-defined constant $EMPTY_STR.
* In KeyedText.pm, reformatted all method/submethod signatures in the
pod so they look more Perl 6 like; named args are now indicated with
":$foo" rather than "{ $foo }", and all args explicitly have trailing !
to indicate mandatory or ? for optional. However, the way you invoke
them in code remains unchanged.
* In KeyedText.pm, updated all documentation to replace 'submethod'
with 'method', which is more accurate.
* Upgraded both as_debug_string() methods to return results that are
more self-explanitory and easier to read (and include linebreaks) when
simply dumped to a terminal, alone or embedded in a larger message.
* Gave both as_debug_string() methods the ": STRINGIFY" trait (provided
by Class::Std), which means that Locale::KeyedText objects will now
turn into something useful when simply used in a string context, such
as with Perl's default exception handler that prints it like a string.
* Updated both example MyApp.pl so their show_message() assume that
Locale::KeyedText objects auto-stringify, rather than explicitly
calling as_debug_string() on them.
* Updated all files declaring Text Templates, mainly the examples and
some POD, to rename the read-only %text_strings to %TEXT_STRINGS.
* Added initial complement of 20 user text messages to the new en.pm,
18 of which ('LKT_ARG_*') are generic (for use by any class) and relate
to bad input arguments, and 2 of which are specific to
Locale::KeyedText itself ('LKT_T_FAIL_GET_TMPL_TEXT',
'LKT_T_FAIL_LOAD_TMPL_MOD'). Of the 18 generic messages, 9 are
currently used by Locale::KeyedText itself (see next), and 9 are not.
* Updated KeyedText.pm to throw all of its own exceptions as specific
Message objects, rather than generic text strings. To implement this,
added 3 private (enforced by Class::Std's ": PRIVATE" trait) methods to
Message, and 5 to Translator, which conditionally compose and/or throw
the new Message exceptions, and updated all of the other methods of
those classes to invoke them. These new methods have names like
_die_with_msg() and _assert_arg_*().
* Multiple updates in the TODO file.
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.0Y 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 have named parameters 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
have positional parameters 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.