Revision history for Perl extension GraphViz2::Marpa.

1.09  Fri May 31 09:57:00 2013
	- Re-write the code in Build.PL and Makefile.PL which checks for Graphviz (dot) being installed,
		since the previous code, using a pipe, was failing on some versions of Windows.
	- Assume Config.pm is installed, and hence remove it from the pre-reqs.
		This also stops a warning message generated because Config's version # is undef.
	- Likewise assume File::Spec and File::Temp are installed, and 'recent enough'.
		This is because the new code uses these 3 modules before specifying the pre-reqs.
	- Bump the pre-req for Perl from 5.10.0 to 5.14, since we 'use feature qw/unicode_strings/.
	- Re-write the code in Build.PL and Makefile.PL which checks for Perl being 'recent enough',
		since the previous code, using a pre-req of "perl => '5.10.0'" generates a warning message
		when using Makefile.PL (for my current Perl V 5.14.2). Now we analyze $Config{version}.
	- One CPAN Tester found tests failing even though Graphviz was installed.
		The problem was that the Times font was missing. The new code should fail during 'perl Build.PL',
		or 'perl Makefile.PL', rather than during testing, which is good.
	- Rewrite the use of given/when in GraphViz2::Marpa::Renderer::GraphViz2 as a chain of 'if'
		statements, in preparation for the removal of 'use feature qw/switch/' from Perl.

1.08  Mon May 27 09:45:00 2013
	- Add data/56.gv, which is graphs/directed/biological.gv from Graphviz V 2.29.
	- Add data/57.gv, which is graphs/directed/arrows.gv from Graphviz V 2.29.
	- Add data/58.gv, which uses a clickable href in a table as an edge label.
	- Replace sub read_cvs_file(), using IO::File and Text::CSV_XS, with Text::CSV::Slurp.

1.07  Thu Nov  8 12:38:00 2012
	- No code changes.
	- For pre-reqs such as strict, warnings, etc, which ship with Perl, set the version # to 0.
		Reported as RT#80663 by Father Chrysostomos for Tree::DAG_Node.

1.06  Fri Oct 26 09:09:00 2012
	- Change the lexer to output start_scope and end_scope rather than open_brace and close_brace.
		Change the parser to output start_scope and end_scope rather than start_graph and end_graph.
		This emphasises the case of the stand-alone {...}. Change the default renderer to match.
	- Increment the brace count when a '{' is encountered. This means brace counts (after the first 1
		at the start of the input) will be 1 higher than before, and when a '}' is encountered they will
		also be 1 higher. Hence they count down to 1, not 0 as they used to do.
	- Add an entry to the lexer's FAQ to clarify output from these 3: digraph {}, subgraph {} and {}.
	- Fix a lexer bug which, when given {a [] b}, would lose node b because [] was empty. See data/54.gv.
	- Add samples data/53.gv, data/54.gv and data/55.gv.
	- Add a corresponding entry in the parser's FAQ.
	- Add getters edges(), nodes(), style() and type(), which return most but not all of the information
		in the input *.gv file. These are basically for use by GraphViz2::Marpa::PathUtils.
		In particular, subgraph info is still missing.
	- Add option report_forest for new() and as a mutator. Calling new(report_forest => 1) prints all the
		information provided with those 4 new getters.
	- Reserve the paths() mutator for later implementation. The current code gets into an infinite loop
		sometimes, and so is commented out.
	- Expand the POD for the lexer and the parse giving details on input and output stream content.
	- Move the template for the demo from html/graphviz2.marpa.index.tx to htdocs/assets/templates/graphviz/marpa/
		where it should have been all along. Patch scripts/generate.demo.pl to match.
	- Add cache control metadata to all templates.
	- Link each template to the others, and to the index page for all graph module demos.
	- Add code to GraphViz2::Marpa::Utils to extract mutator names from modules and some programs,
		and output to data/code.attributes.csv, for use by scripts/code.attributes2html.pl.
	- Incorporate code from scripts/code.attributes2html.pl into GraphViz2::Marpa::Utils.
	- Incorporate code from scripts/stt2html.pl into GraphViz2::Marpa::Utils.
	- Rename html/default.stt.html to html/stt.html.
	- Expand contents of html/code.attributes.html, html/index.html and html/stt.html.
	- Add config/.htgraphviz2.marpa.conf and lib/GraphViz2/Marpa/Config.pm to simplify generating the demo's
		index.html.
	- Switch from Tree to Tree::DAG_Node, since it has various methods I hope to use implementing paths().

1.05  Tue Oct 16 09:49:00 2012
	- Fix a bug in the lexer where it used to combine multiple lines in the input file by, basically, using
		join('', <IN>), which meant the last char of a line was juxtaposed with the first char of the next
		line. If the second line started with spaces, that was ok, but if it started with, say, the name of
		a node, then that name was concatenated with what could have been a node name on the end of a previous
		line. This meant 2 separate node names sometimes became one.
	- Add data/52.gv to test the solution.
	- Shift data/code.attributes.html to html/.
	- Shift data/default.stt.html to html/.
	- Add scripts/generate.demo.sh.

1.04  Tue Sep 25 13:55:00 2012
	- All data/*.dot files were renamed to data/*.gv, in line with Graphviz itself.
	- Design change. In the output streams from both the lexer and the parser, the 3 special tokens whose names
		are edge, graph and node, were given the type node_id. Unfortunately, this is confusing because any
		normal edge, graph or node was also given that type. Now, these 3 cases are of type class_id.
		This makes it easier for code processing these output streams to distinguish between special cases
		and common-or-garden nodes. It should have always been done this way, and specifically simplifies code
		in GraphViz2::Marpa::TreeUtils.
	- Change Marpa.pm to support the new distro GraphViz2::Marpa::TreeUtils, which is a sub-class of GraphViz2::Marpa.
		Specifically, the lexer and the parser are stored in mutators called lexer() and parser(),
		so they can be called from sub-classes.
	- This means any shell scripts using -l now need -lexed_file, and if using -p now need -parsed_file.
	- This in turns means patches to various scripts (scripts/*.sh and scripts/*.pl).
	- The opportunity was taken to spell out all command line option names in shell scripts.
	- Update POD to reflect these changes.

1.03  Mon Sep  3 09:28:00 2012
	- Remove unused dependency Module::UseFrom.
	- Fix disastrous bug in the parser. Test with data/90.Petersen.dot.
	- Add README.
	- Rename scripts/generate.demo.pl to scripts/generate.index.pl, since it does not run all demos,
		it just creates html/index.html.
	- Add FAQ item in GraphViz2::Marpa about how to re-create demo files.

1.02  Fri Jun 22 11:50:00 2012
	- Patch the regexp in the DFA used to recognize HTML-style labels. It's smarter now.
	- Patch the default renderer to not add double-quote delimiters when outputting HTML-style labels.
		These patches require files (30, 31, 32, 33, 34, 35, 38).dot to be edited.
		And they require files (30, 31, 32, 33, 34, 35, 38).(lex, parse, rend) to be re-generated.
	- Add an item to both the lexer's and parser's FAQs about embedding things like <br ... /> in HTML-style labels.
	- Add an item to the lexer's FAQ about the 1 label format still not handled by the new code.
	- Change the format (spacing) of tokens printed in the lexer to match format used in the parser.
	- Update FAQ as to why setting report_items prints 2 copies of the tokens (Ans: 1 each for lexer and parser).

1.01  Wed Feb  8 11:22:00 2012
	  - Add a renderer attribute to the Marpa class, which gets passed to the parser.
	  	In Marpa.pm, this defaults to '' but in Parser.pm it defaults to a GraphViz2::Marpa::Renderer::GraphViz2 object.
	  - Expand docs relating to script options and class attributes.
	  - Update data/code.attributes.*.

1.00  Mon Jan 23 11:09:44 2012
	  - Original version
