.. -*-rst-*-

Release Notes

.. contents::

Release 0.3.45

reStructuredText parsing:

* Allow plug-in roles to return an array mixing text and DOM elements
* Changed the implementation of the :parent: option to the class::
  directive to be more general

reStructuredText transforms:

* Pending transforms can now supply a code reference instead of a
  string to implement the transform

Writer 'html':

* No longer round column widths to the nearest integer: rounding can
  cause the percentages to go over 100%.  Browsers deal better with
  percentages < 100 than > 100.
* Allow classes to be attached to rows (can happen with the :parent:
  option of the class:: directive)

Directive 'perl':

* Improved handling when errors occur in running directive, especially
  for the perl role.

Release 0.3.44

reStructuredText parsing:

* Fixed an issue in recognizing a Roman numeral list beginning VI.
* Added :parent: option to class:: directive
* Propagate classes on list items in list tables to the table cells

Writer 'html':

* Force HTML ids to be unique
* Process attributes (such as class) on list items and literal

Release 0.3.43

* Cleaned up tests to accommodate forgiving implementations of
  'convert' command

Directive 'code-block':

* Extension to 'generic' state:

  - Function string can now specify "variable", "reference" or a
    custom face for formatting substrings
  - The function regular expression can now contain up to 9 substrings

Writer 'latex':

* Fixed a potential undefined variable warning

Release 0.3.42

reStructuredText parsing:

* Fixed a bug where recursive substitution definitions caused an
  infinite loop.
* Fixed an issue that caused some tests to fail on systems that do not
  have a ``convert`` program available.

Plug-in directives:

* Improved POD documentation of perl:: directive.

* The code-block:: directive has a new ``-D code-block-states-flags``
  flag to specify non-standard flags (such as defines) to the states
  program while doing markup.

* The code-block:: directive has new options ``:states-file:`` and
  ``:states-flags:`` that perform the same function (and, if
  specified, override the values of) the ``-D code-block-states-file``
  and ``-D code-block-states-flags`` options on a per-code-block

* The default states markup file has a new language definition
  ``generic`` whose markup is controlled completely by ``-D
  code-block-states-flags`` or ``:states-flags:``.

Release 0.3.41

prest application:

* Made the -e option default to 'utf8' (instead of just claiming to do so)
* Sped up reading of the file
* Fixed the code that returns the list of available encodings for -h

reStructuredText parsing:

* There is a new built-in ``substitution-reference`` role
* Custom roles based upon mathml-display will also appear in display style
* Fixed a bug with parsing consecutive bulleted lists
* Added ability to generate Roman numerals for enumeration lists
* Keep class information on custom roles
* Added ability to attach a label to a mathml equation that becomes
  a substitution definition annotated with the equation number.
* Added :format: option to the sectnum:: directive to allow Roman
  numerals or letters as well as numbers at various levels of the numbering

Plug-in directives:

* The code-block:: directive allows a :class: option
* The perl:: directive defines a $SUBSTITUTION variable giving the
  name of any substitution definition being defined by the perl directive.

Writer 'html':

* Added support for the label of a mathml equation
* Do a better job of propagating class information for parsed_literal
* Convert the -e encoding to the right format for HTML.

Writer 'latex':

* Allow a stylesheet mechanism for styling classes of inline
  elements.  For example, if you define a custom role ``myrole``, then
  text using that role will appear with ``\styleinlinemyrole(...)``
  around it.  There will be a null definition for the style which can
  be overridden using ``\renewcommand{\styleinlinemyrole}{1}{#1}``.
* Fixed parsed literals to be more literal than they were (e.g., don't
  convert ``<=`` to a less-than-or-equal sign.)
* Handle blank lines within parsed literals
* Fixed the newlines around ``\item`` and ``\end{description}``
* Fixed a bug where a comment could cause some actual text to
  disappear because it didn't end with a newline
* Added support for superscript and custom roles
* Added support for a figure's class to be used as the name of the
  latex environment
* Added support for mathml labels

Release 0.3.40

Second attempt to fix a test that failed because it was not site-independent

Release 0.3.39

Fixed a test that failed because it was not site-independent

Release 0.3.38

General changes:

* Updated coverability comments for more recent Devel::Cover versions.

prest script:

* Turn off warnings after finishing so that Devel::Cover doesn't cause
  tests to fail

reStructuredText parsing:

* Delete spaces within URIs of targets and embedded URIs
* Hopefully fixed a problem that was causing regression failures for
  perl 5.9 and above
* Fixed a problem that occurred if Encode module was not available
* Added "tab" as a value for the :delim: option of the csv-table::

Writer 'html':

* Added "-W field-colon' option
* Use HTML::Entities to produce more readable output of mathml markup
* Dead code removal
* Fixed document title/subtitle not to hold markup characters

Writer 'latex':

* Added "-W author-skip" option
* Added "-W omit-docinfo" option
* Added "-W packages" option
* Added ``\styleaddress`` to style an organization, address, or contact
* Added ``\styleclassZZZ`` markup to allow style for class ZZZ
* Ensure math environment for "|" character
* Fixed a warning for a system message with no ids
* Added handlers for inline and compound
* Put the document's title/subtitle into the document's docinfo rather
  than using global variables
* Avoid a latex error for definition and option lists by putting an empty
  ``\mbox{}`` between the term/classifier and the newline
* Don't implement option group as a ``tabular`` environment
* Have a table use a ``table`` environment if there is a title
* Fixed the processing of auto-symbol footnotes.

Release 0.3.37

reStructuredText parsing:

* Added "-D relax-citation-characters" option.
* Added roles "mathml-display" and "mathml-inline" to force
  display/inline mode.
* Role name is now passed in as fourth argument to role attribute
* DefineRole now allows defining other info about the role than just
  its options.
* Plug-in directives can now have an init routine that gets called to
  define and initialize them.
* Plug-ins can now define roles as well as directives.
* Roles can now define a reparse option which will cause the output to
  be reparsed as reStructuredText.

Writer 'latex':

* Added "-W chapter" and "-W cloak-email-addresses" options.
* Added a new '\styleliteralblock' style command.
* Fixed a problem with inferring minus signs.
* Fixed a problem with converting opening single quotes.
* Fixed handling of raw latex.

Release 0.3.36

Directive 'code-block':

* Allow the 'states' executable to be found anywhere on the path, but
  check standard locations first.

Writer 'latex':

* Sort the dependent \usepackage modules so that there is a canonical
  order for regression testing

Writer 'index':

* Sort the inline targets so that there is a canonical order for
  regression testing

Release 0.3.35

There were no functional changes in this release.

Fixed the latex simple test not to use a code-block directive, which
compiles differently on different machines.

Release 0.3.34

reStructuredText transforms:

* Fixed a bug with hyperlink resolution when a chained target went to
  an indirect target to an internal target.

Writer 'index':

* Fixed a bug in dealing with raw DOM objects.

Writer 'latex':

* Fixed bugs in line blocks
* Fixed bugs in parsed literals
* Fixed a bug where a paragraph ending in an interpreted text item did
  not result in a new paragraph
* Fixed a bug with processing quotes around marked up text
* Fixed a bug with special characters in options
* Added support for outputting mathml to latex (requires
  Text::ASCIIMathML 0.4 or later)

Release 0.3.33

There were no functional changes in this release.

* Fixed some tests and expects to be compatible with perl 5.9.5.
* Modified Makefile.PL hopefully to be compatible with more versions
  of make.
* Changed the way the system plug-in directive gets the message from 
  STDERR so that it will hopefully be compatible with more systems.

Release 0.3.32
prest script:

* Generated a fatal error if an input file cannot be opened.

ReStructuredText parsing:

* The target role now keeps the case of the target in creating its

Writer 'html':

* Process the :class: option on images.
* If the "-W image-exts" option is used (it's actually deprecated in
  favor of "-D image-exts"), the default alt attribute now also uses
  the substituted extension.

Writer 'index':

* Improved help text.
* Added "-W index-indirect-targets" option.
* Added "-W index-role-target" option.

Writer 'xref':

* Added a "-W xref-role-target" option to specify which target role
  (if any) should be used for cross references.
* The "-W xref-role-targets" option has been removed.

In general:

* Recoded to remove most dependencies on internal structure of DOM
  objects outside of DOM.pm.

Release 0.3.31
ReStructuredText parsing:

* Added a "target" role that allows separation of inline target tags
  from the text that is displayed.
* Fixed a bug where, if two items in an enumerated list occurred with
  no blank line between them and a third item was separated by a blank
  line, the third item was put into a separate list.

Directive 'perl':

* Exported the following new global variables: ``$DIRECTIVE`` and

Writer 'html':

* Mark a single paragraph in a compound as both class "compound-first"
  and "compound-last".
* Fixed a bug where a class attribute on a field list did not
  propagate to the output.
* Fixed a bug where an align attribute on a table did not propagate to
  the output.

Writer 'index':

* Implemented the '-W doc-titles' and '-W index-role-targets' options.
* Output nothing instead of an empty table if there are no index

Writer 'xref':

* Added the ``-W xref-role-targets`` option.
* Allowed the suffix to be an empty string.

Release 0.3.30
* Fixed problem with find command in Makefile.PL that used a Linuxism.
* Made most of the perl modules use the subversion release as version number.

Release 0.3.29
* Renamed ReleaseNotes.txt to ChangeLog so that it will appear as a
  special file on CPAN.
* Made one more effort to fix the indexing of version numbers.

Release 0.3.28
* Create lib/Text/Restructured.pm from lib/Text/Restructured.pm.PL so
  we can insert the version number in to allow CPAN to index it
* Fixed a problem with creating regular-expression expects for tests.

Release 0.3.27
Fixed problem with CPAN indexing of versions.

Release 0.3.26
* Completely reworked the regression test structure so as not to be
  dependent upon GNU make.

Writers 'dom' and 'xml':

* Fixed a bug with attribute strings that contain double quotes.

Release 0.3.25
* Fixed a problem with Makefile.PL.

ReStructuredText parsing:

* Don't write messages to STDERR for errors in directives in test

Writer 'html':

* Fixed a problem with quote markes in "alt" image text.
* Added "-W body-only" flag.

Release 0.3.24
* Fixed problems with running with -T.
* Fixed Makefile.

Release 0.3.23
* Fixed the help to parse as reStructuredText.
* Execute evals in ``Text::Restructured::Writer::Eval`` instead of ``Eval_::``.
* Initialize some of the opt variables to avoid warnings if not driven
  by prest.

ReStructuredText parsing:

* Added "-D image-exts" flag so that each writer doesn't have to
  support the functionality separately.

Writer 'html':

* Added "-W enum-list-prefixes" flag.
* Documentation deprecates "-W image-exts".

Writer 'latex':

* Be more lenient about including graphics for files that aren't in
  the current directory.
* Fixed the processing of raw DOM elements to ignore those not
  intended for latex.
* Added a newline before admonitions so they're processed in vertical

Writer 'toc':

* Added "-W parent-role" flag.

Release 0.3.22

Release 0.3.21

Updated the ``toc`` writer to have expanded abilities with the ``-W
file-suffix`` option.

Fixed the Makefile.PL so that hopefully at least some platforms will
pass regression tests.

Added release notes to the prest documentation.

Release 0.3.20

Made the ``html``, ``toc``, and ``xref`` writers compatible with
non-breaking spaces in Perl 5.8.0 implementation of Unicode.  (Unicode
implementation was fixed in Perl 5.8.6.)

All ``-D`` or ``-W`` option names can use either hyphens ("-") or
underscores ("_") for word separators; internally everything uses

reStructuredText parsing:

* Added hyphens to the following ``-D`` options: ``entry-attr``,
  ``include-ext``, ``include-path``, ``nest-inline``, ``perl-path``,
  ``row-attr``, ``table-attr``.
* Added the following ``-D`` options: ``file-insertion-enabled``,
  ``ignore-include-errs``, ``raw-enabled``.
* Fixed a bug where explicit targets were not permitted within an
  embedded url (e.g., '``reference <#explicit-target>``').
* Don't consider targets defined on the same source/line number to be
  duplicate targets (can happen with multiply-included files).
* Fixed the checking for inconsistent title levels to be more robust.
* Keep an ``@INCLUDES`` array to keep track of the include stack.  This
  variable can be accessed in a ``perl``/``if`` directive.
* Fixed a bug where large grid tables could result in a deep
  recursion error.

reStructuredText transforms:

* Added the ``-D docinfo-levels`` option.
* Changed the documentation to show the ``-D`` options with hyphens ("-")
  instead of underscores ("_") separting words.
* The ``sectnum`` directive now processes starting from its containing
  section, rather than from the top of the DOM tree.

Directive '``raw``':

* Added a ``:head:`` option.

Directive '``if``':

* Export the ``$SOURCE``, ``$LINE``, and ``@INCLUDES`` for use in Perl

Directive '``perl``':

* Implemented ``:file:`` option.
* Exported ``@INCLUDES``.

Directive '``sectnum``':

* Added a ``:prefix-title:`` option.

Writer '``html``':

* Inserted hyphen in the ``-W body-attr`` option.
* Updated for adding hyphens to the following ``-D`` options:
  ``table-attr``, ``entry-attr``, ``row-attr``.
* Added ``-W image-exts`` option.
* Added support for ``:head:`` option of ``raw`` DOM.
* Fixed a bug with targets.
* Fixed a potential undefined variable warning for footnote references.

Writer '``index``':

* Changed documentation for ``-W`` options to use hyphens ("-") instead of
  underscores ("_") between words.
* Implemented ``-W output-header`` and ``-W title-underline`` options.
* Changed implementation to use a ``compound`` directive instead of a
  ``raw`` directive to set the class for the generated contents.
* Removed a potential undefined variable warning for indirect targets.

Writer '``toc``':

* Updated documentation to show ``-W`` options with hyphens ("-") instead of
  underscores ("_") to separate words.
* Restructured for simplicity.
* Changed the way non-breaking spaces are removed from generated DOM
  objects since the auto-numbering may have things other than numbers
  in it.

Writer '``xref``':

* Added the following ``-W`` options: ``appendix``, ``chapter``,
  ``section``, ``xref-sections``, ``xref-targets``.
* Restructured the code for simplification.

Release 0.3.19
Added support for ascii-mathml role and directive to produce mathml
markup.  The mathml markup is only supported in the ``dom`` and ``html``
writers for now.

Release 0.3.18

Went through code coverage reports and updated the tests to bring the
line and condition coverage up to 100% (except the soon-to-be-outdated
``latex`` writer).  This analysis resulted in the following fixes:

Prest application:

* Fixed a bug where help prints out multiple times if there are
  duplicate writers.
* Relocated all the code for parsing and interpreting writer schemas
  to ``Text::Restructured::Writer``.
* Fixed the version number not to end with a period.
* Don't use ``FindBin`` to append the directory in which the script is
  found to its ``@INC`` path.
* Don't convert digits in ``-W`` options to underscores.
* Removed code for parsing DOM files to ``Text::Restructured::DOM::Parse``.
* Insert blank line in usage before "Descriptions of Plug-in
  Directives" and "Descriptions of Writers".

reStructuredText parsing:

* Stricter option checking in most directives.
* Removed package globals and incorporated into a parser object.
* Initialize ``ANONYMOUS_TARGETS`` in init.
* Fixed the handling of inline literals in definition lists.
* Put a system message in the document rather than dying if a plug-in
  directive fails to compile.
* Simplified the code by removing tests whose conditions were
* Fixed an infinite loop that could come up in processing nested
  inline markup.
* Fixed an infinite loop that could come up if a line block started
  with two or more blank lines.
* Fixed the removal of inline markup characters from normalized names.
* Have ``include`` directive do nothing if the file is empty, as opposed
  to returning an empty paragraph.
* Added checks for the ``:prefix:`` and ``:suffix:`` options to the
  ``role`` directive to be sure they're formatted correctly.
* Return a system message if the title in a table-type directive is
  not a single paragraph.
* Merged the code for ``csv-table`` and ``list-table`` directives to the
  extent possible.
* Fixed the ``:class:`` option for ``target-notes``.

reStructuredText transforms:

* Simplified code by removing branches whose conditions were
* Return a system message if evaluating transform code results in an
* Process ``:class:`` option for ``target-notes`` directive.
* Allow ``decorations`` transform to put in link to prest documentation if
  DOCURL is specified.

Directive '``code_block``':

* Added ``-D code-block-states-file`` option.
* Do line numbering whether or not states can be run if

Directive '``system``':

* Return a ``PCDATA`` DOM if in a substitution definition context (instead
  of appending it).
* Don't add a null paragraph if the text is empty.

Writer '``dom``':

* Updated to use ``$writer`` argument to access ``ProcessDOMPhase``.

Writer '``html``':

* Changed the semantics of ``-W embed-stylesheet`` and ``-W stylesheet``.
* Added ``-W stylesheet2`` option to specify a secondary embedded stylesheet.
* Changed default of ``-W field-limit`` to 14 from 15.
* Reworked so all the writer's annotations are in DOM's ``{_html}`` member.
* Reworked so that DOM's ``{attr}`` member is read-only; HTML attributes
  are all copied to ``{_html}{attr}`` member.
* Factored out much of the attribute handling into a ``GetAttr`` routine.
* Fixed output of literals embedded in literals.

Writer '``index``':

* Restructured code for simplification
* Pass the a writer argument into ``QuoteStart``.
* Fixed processing of ``-W short-titles``.
* Added handler for interpreted roles.

Writer '``toc``':

* Simplified code for ``generated``.

Writer '``xref``':

* Simplified code for substitution definitions.

Release 0.3.17
Did not exist.

Release 0.3.16
Updated manifest to add files that will allow the regression to pass
on machines with differing locales.

Release 0.3.15
Added test files to fix problems when different locales use different
text for system error messages.

Prest application:

* Fixed problem that caused bare subroutines in writers to be compiled
  more than once.
* Removed the path out of the subroutine names created when compiling
  writer routines.
* Fixed the ``#line`` directives for writer subroutines so that better
  error messages/coverage results are obtained.

Made writers more efficient by renaming package subroutines to ``BEGIN``
so that they will always be called exactly once.

Writer '``html``':

* Incorporated changes in docutils ``html`` writer:
  * No longer change double-quotes to "``&quot;``".
  * No longer put a newline after a ``<pre>``.

Release 0.3.14
First release that was indexable on CPAN.