The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Perl extension Graph::Easy::Marpa.

1.09  Mon Jun 25 14:10:00 2012
	- Handle HTML-style labels, even if they contain ';' chars, e.g. by using HTML entities such as <.
	- 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.

1.08  Sun Dec 25 10:33:00 2011
	  - 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.

1.07  Wed Dec 14 13:29:00 2011
	  - 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.

1.06  Mon Aug  8 11:08:00 2011
	  - 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'.

1.05  Tue Aug  2 15:32:00 2011
	  - 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.

1.04  Fri Jul 29 14:12:00 2011
	  - 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.

1.03  Sat Jul 23 16:36:00 2011
	  - Add Sort::Naturally to Build.PL and Makefile.PL, since it's used in t/*.t.

1.02  Thu Jul 21 13:37:00 2011
	  - 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.

1.01  Wed Jul 20 14:24:00 2011
	  - Remove the restriction that anonymous nodes had to have at least 1 space in their name.

1.00  Tue Jul 19 15:42:00 2011
	  - 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.

0.91  Wed Jun 29 11:41:00 2011
	  - Update pre-requisites. Set::FA 1.05 -> 1.06. Add File::Spec, File::Basename, GraphViz2.

0.90  Tue Jun 28 12:18:00 2011
	  - 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.

0.60  Sat May 14 11:16:00 2011
	  - 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.

0.51  Wed Apr 27 10:46:00 2011
	  - Update pre-reqs.

0.50  Tue Apr 26 11:09:44 2011
	  - Original version