Locale-KeyedText
----------------------------------------------------------------------
2005-11-18 Darren Duncan <perl@DarrenDuncan.net>
* Locale-KeyedText Release 1.6_5 (SVN r[pending]).
* 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 (SVN r1049).
* 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 (SVN r996).
* 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 (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 (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 (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, 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.