[Module]
Name=Graph::Easy::Marpa
Changelog.Creator=Module::Metadata::Changes V 2.04
Changelog.Parser=Config::IniFiles V 2.68

[V 1.09]
Date=2012-06-25T14:10:00
Comments= <<EOT
- Handle HTML-style labels, even if they contain ';' chars, e.g. by using HTML entities such as &lt;.
- Add matching test files data/node.(17, 18, 19).(raw, cooked). See also the demo page.
- Change the abstract slightly to mention we process Graphviz files in the Graph::Easy format.
- Expand the FAQ re HTML-style labels.
- Encode HTML entities when including the demos' source code in the demo page, because now demos can
contain HTML-like labels.
EOT

[V 1.08]
Date=2011-12-25T10:33:00
Comments= <<EOT
- Change <img... to <object...> in the demo creation code, to keep poor old FireFox happy.
- Change various things in html/graph.easy.index.tx to we validate as XHTML 1.0 Strict.
- Switch from Marpa::XS to Marpa::R2.
EOT

[V 1.07]
Date=2011-12-14T13:29:00
Comments= <<EOT
- Fix declaration of null_value for some rules, to stop heaps of warnings during testing and/or running gem.pl.
The messages you get look like: Zero length sequence for symbol without null value: "group_name",
if you don't have symbol descriptors declared for symbols whose value can be empty.
Search Graph::Easy::Marpa::Parser for 'symbols' to see what I had to do because group and node names can be empty.
- Update Build.PL and Makefile.PL to only require Marpa::XS V 0.026000 (not 0.108000), which is the latest as of today.
- Add a discussion of Marpa::PP to the FAQ, since I've tested it too.
EOT

[V 1.06]
Date=2011-08-08T11:08:00
Comments= <<EOT
- Improve home-grown validate.build.make.pl to include not just *.pm files, but also *.pl and *.t files, so as to find more dependencies.
- Add Capture::Tiny, File::Remove, File::Temp, Getopt::Long, List::Cycle, Pod::Usage and Text::Xlate to Build.PL and Makefile.PL.
- And yes I know, List::Cycle is not really needed (yet) :-).
- Patch the STT so that attribute definitions for classes can have leading spaces, as edge and node attribute definitions already could.
Eg: 'graph {rankdir: TB }' can now be 'graph { rankdir: TB}'. Note the new space in front of 'rankdir'.
EOT

[V 1.05]
Date=2011-08-02T15:32:00
Comments= <<EOT
- Add File::Slurp to Build.PL and Makefile.PL because its readdir() method is used in t/cooked.t and t/raw.t.
- Add http://metacpan.org/ link to html/graph.easy.index.tx, so it appears in html/index.html.
- Clean up confusion between demo output being png or svg. The demo files uploaded to my web site used to be png,
because one of the outputs (graph.15.*) was empty (for some reason) when svg is used.
But since svg files are smaller than png files, and everything works, svg is used again.
- Add DOCTYPE and Content-Type to html/graph.easy.index.tx, so that html/index.html validates as XHTML 1.0 Transitional.
EOT

[V 1.04]
Date=2011-07-29T14:12:00
Comments= <<EOT
- Make scripts/gem.pl pass rankdir thru to parser.
- Make scripts/generate.demo.sh pass image type thru to scripts/generate.demo.pl.
- Fix scripts/graph.easy.index.tx img src field patch which got lost with a git reset.
EOT

[V 1.03]
Date=2011-07-23T16:36:00
Comments=- Add Sort::Naturally to Build.PL and Makefile.PL, since it's used in t/*.t.

[V 1.02]
Date=2011-07-21T13:37:00
Comments= <<EOT
- Change colors so they're compatible with both the X11 and SVG color schemes.
- Require GraphViz2 V 1.09 to have access to output image formats such as png:gd etc.
EOT

[V 1.01]
Date=2011-07-20T14:24:00
Comments=- Remove the restriction that anonymous nodes had to have at least 1 space in their name.

[V 1.00]
Date=2011-07-19T15:42:00
Comments= <<EOT
- Implement subgraphs (i.e. groups), classes and subclasses. See the FAQ for notes on group attributes.
- Put a copy of the CSV version of the STT in the __DATA__ section of the lexer, to speed up reading it.
- Support the rankdir option for the graph as a whole.
- Support the directed option for the graph as a whole.
- In Graph::Easy::Marpa::Lexer, use the timeout feature to ensure the DFA does not loop forever.
- In Graph::Easy::Marpa::Lexer, make OpenOffice::OODoc optional, and only load it if the user specifies *.ods
for the STT file.
- In Graph::Easy::Marpa::Lexer, add verbose to the list of keys accepted by new().
- In Graph::Easy::Marpa::Renderer::GraphViz2, handle cases where the graph definition starts or ends with an edge,
or a daisy chain of edges.
- In Graph::Easy::Marpa, add a new section to the docs, Methods, where all public methods are documented.
These are the same as the parameters to new(), along with log() and run().
- In other modules, update the lists of keys acceptable to new(), and the corresponding method docs.
- Allow an object of type Graph::Easy::Marpa to pass a logger object to objects of type Graph::Easy::Marpa::Lexer
and of type Graph::Easy::Marpa::Parser, along with the corresponding values for maxlevel and minlevel.
- Use Date::Format to add a date stamp at the end of html/index.html, as output by generate.index.pl.
- Extend demo with data/edge.08.raw, which show various arrow heads, and many class and subgraphs samples too.
- Export the STT (cvs file) as data/default.stt.html. The version shipped with 0.91 was not up-to-date.
EOT

[V 0.91]
Date=2011-06-29T11:41:00
Comments=- Update pre-requisites. Set::FA 1.05 -> 1.06. Add File::Spec, File::Basename, GraphViz2.

[V 0.90]
Date=2011-06-28T12:18:00
Comments= <<EOT
- Allow spaces in graph definitions, by expanding the regexps in the state transition table.
- Add more sample data, as data/*.raw (for input to the lexer) and data/*.cooked (as output from the lexer
and input to the parser).
- Adopt Set::Array instead of manually managing some arrayrefs.
- Ensure all major methods (normally run() ) return 0 for success and 1 for failure, and that test code does too.
- Switch from Moose to Hash::FieldHash, to make the code more light-weight.
- Implement scripts/generate.index.pl to create a web page with embedded Graph::Easy files and corresponding *.svg files.
- Upload demo to http://savage.net.au/Perl-modules/html/graph.easy.marpa/index.html.
EOT

[V 0.60]
Date=2011-05-14T11:16:00
Comments= <<EOT
- Implement basic Graph::Easy::Marpa::Lexer to read raw Graph::Easy files.
- Change Graph::Easy::Marpa::Test.run() to test_parser(), and implement test_lexer().
- Change Graph::Easy::Marpa::Test to accept file name not file number.
- Add various test files in data/ and t/.
- Add scripts/graph.30.sh to show how to feed the lexer's output to the parser.
EOT

[V 0.51]
Date=2011-04-27T10:46:00
Comments=- Update pre-reqs.

[V 0.50]
Date=2011-04-26T11:09:44
Comments=- Original version
