PerlPoint::Package 0.34 and PerlPoint::Converters 0.10 released

[email protected] ((Jochen Stenzel)) Sat, 16 Jun 2001 16:20:51 +0200
Newsgroups perl.perlpoint
Message-ID <[email protected]>
Hello,

it's been quite silent here for a while, and no PerlPoint news were 
published for a long time. But behind the scenes we were working on new
versions of the toolkit. While I'm sending this out, PerlPoint::Package
0.34 and PerlPoint::Converters 0.10 are making their way to CPAN and
should arrive soon.

These releases are a real step forward. The first intention
of Package 0.34 was to improve internals by defining a better and
flexible way to declare tags. But then while using PerlPoint for
documentation purposes and listening to potential users, we also
focussed on improved usability and on documentation usage.

            * These are major releases. *

This means that you *must* install both updates to get a new working
PerlPoint. Converters 0.009 will not work with the new Package 0.34,
nor will Converters 0.10 with older versions of the Package because of
internal changes. On the other hand, all existing documents should be
processed unmodified except for image pathes. Please see the related
note in the Converters changelog.

So what's new in these combined releases? To make reading easier, there
will be another message mentioning improvements of pp2html. Here are 
the parser/Package news: 

There's no additional paragraph type in this release. (Bad news first 
;-) 

OK. The list of changes is *very* long, please have a look at the 
Changelog file for all the details. Here are the highlights: 

* New way to declare tags.

  This is an internal change resulting in various new modules
  in the PerlPoint::Tags:: hierarchy. Tags declarations are
  (very easy to use) modules now.

  Benefits: clearer, more consistent, flexible way to define
  tags. Improved parsing by searching for tag options / bodies
  only if tags are declared to have options / bodies, which
  makes writing documents more intuitive. Tag authors can
  hook into parsing, performing own option / body / whatever
  checks and telling the parser if the tag was well used or not.

  Tag declarations can be easily shared by various converters
  now. Documents containing tags which are not supported by the
  current converter can be easily processed by setting the new
  converter option -tagset (e.g. "-tagset HTML" which will
  instruct the parser to accept all tags which are defined by
  pp2html).

* Adapted way of macro processing.

  To make tag and macro usage as similar as possible, macro
  handling was adapted according to the new tag handling: the
  parser will only search for macro options / bodies if the
  related definitions contain option / body references. So if
  you declare a macro without body, you can write "\MACRO<i>"
  and "<i>" will be treated as plain text.

* Improved Performance.

  Parsing could be accelerated significantly.

* More paragraphs cached.

  Macro and variable usage formerly excluded a paragraph from
  caching because definitions could potentially be subject to
  changes. Watching definition changes by cached fingerprints,
  such paragraphs can now be cached safely as well. Thanks to
  Stefan Sautter for the idea.

* Cache is rebuilt automatically if modified builder components
  (parser, used constants, serializer) are detected.

  There should be no further need to write "Please remove
  existing caches after this update" in release notes.

* Tag declared tables can be inlined now, declaring a string as
  row separator by the new option *rowseparator*. This means
  that you can write things like \TABLE{rowseparator="+++"}
  A | B | C +++ 1 | 2 | 3 \END_TABLE just as part of a text
  paragraph.

* Tables can be *nested*.

  If the converter allows to use this feature, it is now valid
  PerlPoint to write funny things like \TABLE{rowseparator="+++"}
  column 1 | column 2 | B<\TABLE{rowseparator="%%%"} n1 |
  n2 %%% n3 | n4 \END_TABLE> +++ xxxx | yyyy | zzzzz +++ uuuu |
  vvvv | wwwww \END_TABLE.

* Startup directory and source nesting level are made accessible
  via variables. Converters can "predeclare" variables (setting
  up them internally at startup time so that all users can access
  them just like variables specified explicitly in a document).

* No further need to guard "<".

* Simplified condition interface.

  Access to user settings and variable values via interface
  functions, hiding the (perly) details:

   ? flagSet(myFlag) or varValue('var') eq 'value'

  Well, Perl is still to be seen ;-)

* pp2sdf could be significantly improved. Almost all pp2html
  tags are directly supported now - have a look at the
  impressive results!

* New basic tag \READY stops parsing instantly. Useful in
  conditional or dynamically made document parts.

* Several bugfixes.

Enjoy!

          Jochen