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

2.03  Mon Dec 12 13:45:00 2014
	- Patch so token names are not stored with double-quotes when input is double-quoted.
		This means renderers must double-quote things.
	- Patch so the graph's id has the tree node name of 'graph_id' and not 'node_id'.
	- Patch so subgraph ids have the tree node name of 'subgraph_id' and not 'node_id'.
	- Patch docs re See Also.
	- Fix typo in regexp in renderer.
	- Add method decode_port_compass($node).
	- Add method decode_node($node).
	- Add method decode_tree($tree). This examines the prolog to determine if the tree is 'strict'
		or not, and whether it is a 'digraph' or 'graph'.
	- Add t/decode.port.compass.t.

2.02  Thu Dec  4 14:11:00 2014
	- If maxlevel (for log) is set to info or above, print 'Parsed tree:' just before printing the
		tree. This is to make it easier to parse the output, if that ever happens, since it now
		indicates which particular tree is next in the log.
	- Remove commented-out code for _post_process().
	- Rename the tree node of the graph's id from 'node_id' to 'graph_id'. This really should have
		been the in original design, and it helps GraphViz2::Marpa::ParthUtils.
	- Update the docs.

2.01  Thu Nov 27 15:37:00 2014
	- Replace string comparison when getting a 'parse exhausted' error from Marpa, with a call to
		Marpa::R2::Scanless::R's exhausted(). That makes the code much nicer.
	- Split Utils.pm into Demo.pm (just for generating the demo pages), Utils.pm (just for testing).
		This way, GraphViz2::Marpa::Config is not needed for testing, and since that module needs
		scripts/copy.config.pl to have been run, CPAN testers were reporting failures.
	- Update scripts/generate.demo.pl.
	- Update MANIFEST.

2.00  Tue Sep  9 09:36:00 2014
	- Warning: GraphViz2::Marpa::PathUtils V 1.05 will not work with GraphViz2::Marpa V 2.00.
		With this release of GraphViz2::Marpa, GraphViz2::Marpa::PathUtils must now be re-written.
	- Rewrite from Marpa::XS to Marpa::R2, and hence build a new, and much more sophisticated,
		grammar. This grammar is based on MarpaX::Demo::StringParser V 2.02.
	- Include sample graphs shipped with Graphviz, in xt/author/data/ as new test data.
	- Expand helper scripts. E.g. scripts/generate.demo.sh generates SVGs for both standard test
		data, from data/, and author test data. The HTML template for the demo page has been changed
		to link the 2 output sets of images.
	- Rewrite docs.
	- Reformat the docs and this file to be a max of 100 chars per line.

1.14  Tue Jul  8 08:59:00 2014
	- Patch test files to report test counts.

1.13  Thu May 27 08:31:00 2014
	- Remove t/version.t, and so remove Test::Version, since the latter fails when combined with
		Test::Pretty. I do not use Test::Pretty, only Test::More.

1.12  Fri Nov 29 08:55:00 2013
	- Remove GraphViz2 from the pre-reqs. This module was not used.
	- Remove GraphViz2::Parse::Marpa from the pre-reqs. This module no longer exists.
		(It has been replaced by MarpaX::Grammar::GraphViz2, which depends on
		MarpaX::Grammar::Parser.)
		See RT#90874. Thanx to Andreas Koenig for reporting this issue.
		See also the GraphViz2 Changes file entries for V 2.19 and V 2.15.
	- Remove scripts/marpa.grammar2svg.pl. This script used GraphViz2::Parse::Marpa.
	- Remove corresponding data/Marpa.Grammar.dat and html/Marpa.Grammar.svg.
	- Add t/version.t, which uses Test::Version.
	- Move t/pod.t to xt/author.
	- Update pre-reqs in Makefile.PL.
	- Update MANIFEST.
	- Regenerate demo output.

1.11  Thu Jun  6 15:46:00 2013
	- Install Graphviz 2.30.1 from AT&T.
	- Re-create the demo files. See scripts/generate.demo.sh.
	- Update META.json, META.yml, MYMETA.json and MYMETA.yml manually, since (after switching to
		just a Makefile.PL) I can't get make to do it for me.
	- Fix usage of Text::CSV_XS in Lexer.pm without a use stmt. Make it Text::CSV anyway, since that
		will use Text::CSV_XS if it's installed.

1.10  Mon Jun  3 11:25:00 2013
	- Rename CHANGES to Changes as per CPAN::Changes::Spec.
	- Remove Build.PL and re-write Makefile.PL to use File::ShareDir:
		Fix installation bug. The tests were calling GraphViz2::Marpa::Utils -> new() which called
		GraphViz2::Marpa::Config -> new() which loaded config/.htgraphviz2.marpa.conf using
		File::HomeDir. Unfortunately, that config file was installed neither by Build.PL nor
		Makefile.PL. So, I've switched to Module::Install to install the config file, and replaced
		File::HomeDir with File::ShareDir. Also, the latter should help MS Windows users (e.g. some
		CPAN testers) who run tests as a user who has no home dir.
		This requires moving the config file from config/ to share/ within this distro.
	- Add scripts/find.config.pl in case you want to find the config file, to edit it say, but for
		testers and end-users that should never be necessary.
	- Remove scripts/copy.config.pl.

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