=0.30
* internal code cosmetics;
* variable settings can be propagated into the stream now;
* improved syntactical error messages;
* fixed a bug detected by \I<Lorenz Domke> (lorenz.domke@gmx.de):
embedded code can now be included into tags;
* According to the PerlPoint language definition tag
recognition is now strictly limited to capitals and underscores
(previous versions accepted lowercase letters in tag names as well).
The restriction makes it easier to use backslashed strings when
\I<all> tags are accepted. Formerly, one had to write
This is \\no_tag, be sure!
Now this can be written
This is \no_tag, be sure!
and only capitalized backslashed strings are still to be guarded:
This is \\NO_TAG, be sure!
As before, this has only to be taken into account if
users prefer to accept everything looking like a tag as a tag
(see \C<\\ACCEPT_ALL> for details).
* Consequently, lowercased letters in alias/macro definitions
are no longer valid. They are accepted but automatically converted
into capitals, while the parser displays a warning.
* \I<Lorenz Domke> (lorenz.domke@gmx.de) detected unhandled macro
modifications when caching was active. I figured out that this
really can happen under the following rare circumstances:
>
* You use a string looking like a tag name not currently known
as tag or alias and precede it by a backslash, like \C<\\NOALIAS>.
The paragraph does not contain any dynamically changing contents.
* Now you proceed the text with active cache. Because the paragraph looks
perfectly static it is cached.
* You declare a new alias \C<\\NOALIAS>. The paragraph remains unchanged.
* Now the next time this text is processed with active cache its
checksum matches the paragraph stored before. The stream is restored
and the new alias is ignored until eiher the paragraph changes or the
cache is cleaned up.
<
* Well, this is not perfect. Users should know this at least, so I added
a suggestion to clean up the cache after introducing new alias definitions.
* pp2sdf: "}" characters outside verbatim blocks and embedded HTML
are now replaced by SDF escape "{{CHAR::rbrace}}" to guard
translations of things like \C<\\B<{key=\>value}\>>
=0.29
* modified the parser module a way that its version can be
displayed by CPAN;
* New common way to pass basic data to active contents:
translator authors can pass a hash of settings which is
mirrored in the active contents namespace as %$PerlPoint.
This makes it easy to pass things like the current target
language or call specific user settings.
Two conventions are already introduced: \I<targetLanguage>
and \I<userSettings> (allowing users to control the translation
process more detailled by passing simple translator options).
See \B<pp2sdf> for an example of usage.
* pp2sdf target code embedding is now restricted to SDF and
HTML, but these both \I<are> officially supported now (as
well as Perl, of course ;-);
* Simplified backslash handling in macros. Before 0.29, each
macro level (and each tag level in the macro replacement,
of course) added a need of yet another backslash before closing
angle brackets (and literal backslashes) in the targetted text,
making it difficult to nest a number of macros (especially
if they were declared by others).
So, until now, one had to write
<<EOE
\I<$var-\>{key}>
\I<\B<$var-\>{key}>>
EOE
but
<<EOE
\I<$var-\>{key}>
\MACRO<\I<$var-\\\>{key}>>
\MACRO<\MACRO<\I<$var-\\\\\\\>{key}>>>
EOE
- not really handable. And inconsistently (nested \I<tags> never
required aditional backslashes, but macros did).
From now on, only \I<one> backslash is necessary \I<ever>:
<<EOE
\I<$var-\>{key}>
\I<\B<$var-\>{key}>>
\MACRO<\I<$var-\>{key}>>
\MACRO<\MACRO<\I<$var-\>{key}>>>
EOE
\B<Note: existing PerlPoint sources might have to be updated.>
* Accelerated macro handling - earlier versions used to \I<reparse>
a macro body which delayed parsing in case of deep macro nesting.
From now on, every token is only parsed \I<once>.
As an additional benefit, a significant amount of code could be
removed and the backend module needs no longer to be used by the
parser which accelerates startup time of translators in general.
=0.28
* removed an old POD headline prefix in README which caused
CPAN to run pod2html (and to display the related section only)
* made it backwards compatible to perl 5.00503 again;
=0.27
* module namespace changed from "PP" into "PerlPoint";
* first CPAN release;
=0.26
* pp2sdf: avoid unintended SDF phrases (\C<P\<something\>>)
now by generating "<" as "{{CHAR:lt}}" (outside verbatim
blocks);
* new utilities directory, providing a NoteTab clipbook file
initially;
* bugfix in active contents handling: it might happen that
lines were ignored;
* new dynamic FAQ document;
* new headline level offset keyword "CURRENT_LEVEL" in
PP file imports;
* The parser now changes into the directory of a sourcefile
when it is processed. This way nested sources can always
use relative pathes, so assembling a patchwork document
becomes easier. \B<Existing sources including files from
other directories may have to be adapted!>
Example: if a source located in \C<subdir> is processed
and includes
\\INCLUDE{type=pp file="\B<subdir/>subdoc.pp"}
to nest a file in its own directory, \C<subdir> had to
be specified because all pathes were relative to the parsers
startup directory. This was not very logical and made it
hard to combine nested sources.
Now the parser changes into the source directory, which
means that nested source pathes are relative to the path
\I<of the including PerlPoint file>, in our example:
\\INCLUDE{type=pp file="subdoc.pp"}
* bugfix in dynamic contents handling: nested dynamic contents
(resolved macros, embedded parts, included parts) might not
be handled in the correct order;
* The cache now considers headline level offsets of nested sources.
Before 0.26 it might happen that the headline level offset was
modified but an \I<old> offset was restored from cache.
\B<The cache format was modified. You \I<can> still use existing
cache files but old data therein will never be referenced. To
clean up old caches just remove them or use the parsers cleanup
facility.>
* the package now explicitly requires perl 5.6;
=0.25
* completed prerequisites list in Makefile.PL;
* added notes about Storable updates to parser documentation;
* cache bugfix;
* trace code bugfix;
* added a new demo application pp2sdf which is a complete
translator;
* process visualization: bugfix and improvements;
* new experimental tag setting "\ACCEPT_ALL" switches to a
"anything that looks like a tag is processed as a tag" mode
to simplify source translation by tools implementing different
tag sets;
=0.24
* new checksum based incremental parsing accelerates updates
(depending on the document structure);
* ordered list can be continued now: simply use \C<##> instead
of \C<#> to continue a previously opened list \I<in the same chapter>
(needs translator updates to take visible effect);
* new \C<run()> option \C<"vispro"> to activate process visualization;
=0.23
* several fixes in embedded code handling, tables can now
be inserted dynamically;
* providing a new basic PerlPoint documentation about
active contents;
* new trace mode TRACE_ACTIVE (active contents evaluation);
* improved README file;
=0.22
* the include directive has a new optional headline level
offset parameter;
* several slight bugfixes in trace modes;
* when reading included files, the main file handle is now
closed instead of duplicated and reused - perl5.6 run
into difficulties in some cases (if several files were
included, the file pointer seemed not to reset correctly
while switching back to the original handle);
* now providing basic PerlPoint documentation in new "doc"
directory, may be included into translator docs;
* added a first README version;
=0.21
* completed table paragraph implementation according to the
design paper: first row is now automatically streamed as
"table headline" (it is up to the backend to format such
table cells as it wishes);
* added macro (or alias) feature, call it still experimental
because there might still be untested cases;
=0.20
* table \I<paragraphs> are implemented now;
=0.19
* new condition paragraphs which allow to maintain presentation
versions in several languages by one source file, for example;
* bugfix in table handling: table stream structure was wrong
(the bug was discovered by \I<L. Domke>);
=0.18
* fixed an error in Makefile.PL comment;
* embedded Perl code is evaluated now (in a safe, user
configurable environment);
* Perl code can now be included as well as embedded;
* PerlPoint can now be embedded as well as included;
* variables are made accessible by included or embedded Perl code;
* added a simple visualizer to the demo directory (pp2tree);
* new optional source line hints in the stream;
* bugfix: backslashes in embedded parts shall not be special
(as they were);
* new multi level list shifts (e.g. "<2"), level is optional and
defaults to 1;
=0.17
* Bugfix release: if a paragraph started with a tag, paragraph
openers (like "*", "#", "-" and so on), they were handled as
special characters until the tag was closed, which made them
invalid inside the tag. Thanks to \I<L. Domke> for the bug
report.
* There was also a bug in tag handling which could be fixed by
the way.
=0.16
* added a tag test which demonstrates the usage (and function)
of string parameters ;
* the grammar file became part of the distribution;
* updated parser documentation;
* definition list items were plain strings before, now they are
streamed input which means that they can contain tags, for example
(thanks to \I<A. Sigel> for the suggestion);
* Added a filter feature to run(). The parser can now suppress
included or embedded code of a language different from the
target one. Embedded HTML code, for example, makes no sense
in a stream passed to a backend which generates LaTeX or PostScript.
=0.15
* this is just another attempt to make the package 5.005 clean ...
thanks to \I<L. Domke> for his tests;
* added the Changelog part of 0.14 which was prepared but not
delivered with 0.14;
=0.14
* improved handling of special characters, as a consequence,
only backslashes should have to be guarded by a backslash
now if they should stay for itself (except of in the
beginning of a new paragraph where a number of special
characters have to be recognized);
* added new demo script pp2pp in a first version which
successfully processes Changelog and TODO file;
* bugfixes: stream contained trailing whitespaces for
list points and headlines;
* bugfix: empty lines in verbatim blocks were not streamed;
* bugfix: stream contained leading newline for verbatim blocks;
=0.13
* made it backwards compatible with perl 5.00503 again
(until more people will have 5.6.1);
=0.12
* added demo translator pp2pod;
* leading spaces in list points are ignored now;
* various bugfixes in parser behaviour (success flags);
* made the Changelog file passing the parser ;-)
=0.11
* added embedding (enclosed blocks of foreign code);
* added including (embedded files);
* added a first version of tables;
=0.10
* fixed various block bugs detected by \I<Lorenz Domke>:
verbatim block opener was supplied in stream in 0.09,
first indentation in blocks was not supplied;
=0.09
* started Changelog;
* verbatim blocks now start with a "here document" hint immediately;
* new "definition list point" paragraphs;
* safer tests;
* streamed lists are embedded into list directives now;
* modified syntax of verbatim blocks;
* added variables;
* modified tag syntax: TAG<body> => \\TAG[{parlist}][<body>];