.. -*-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
  basis.

* 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::
  directive

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
  subroutines.
* 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
  name.

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
  ``$PARSER``.

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
  entries.

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
  correctly.
* 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
  data.

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
  mode.

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
underscores.

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
  code.

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
  invariant.
* 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
  invariant.
* Return a system message if evaluating transform code results in an
  error.
* 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
  ``:numbered:``.

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.