[Module]
Name=GraphViz2::Marpa
Changelog.Creator=Module::Metadata::Changes V 2.11
Changelog.Parser=Config::IniFiles V 2.88

[V 2.09]
Date=2016-08-14T11:33:00
Comments= <<EOT
- Stop using Test::Stream. Use Test::More shipped in the Test::Simple distro.
- Update version #s in pre-reqs.
EOT

[V 2.08]
Date=2016-05-11T10:09:00
Comments= <<EOT
- Update pre-reqs from Test2::Tools::* V 0.000029 to Test2::Bundle::Extended V 0.000030.
- Remove Test2::Suite from TEST_REQUIRES in Makefile.PL. It's not used explicitly, and this
change is part of determining why Test2 or my build tools report a version # of
2.9e-5. Now that Test2 has just been officially released as V 1.302015 this problem
may have vanished. Errr, no. The patch is to quote the version # in TEST_REQUIRES,
although 'small' version #s in PREREQ_PM do not have to be quoted. Sigh. See
https://github.com/Perl-Toolchain-Gang/CPAN-Meta-Requirements/issues/30.
2.07 2016-05-04T08;15:00
- Correct physical address of Free Software Foundation in LICENSE file. See RT#114149.
Thanx to Petr Pisar.
EOT

[V 2.06]
Date=2016-05-03T11:45:00
Comments= <<EOT
- Update last 2 lines of docs from:
The Artistic License, a copy of which is available at:
http://www.opensource.org/licenses/index.html
To
The Perl License, a copy of which is available at:
http://dev.perl.org/licenses/
See RT#114119. With thanx to eagle-eyed Petr Pisar.
EOT

[V 2.05]
Date=2016-05-01T17:25:00
Comments= <<EOT
- Replace Test::More with Test2::Suite. See t/*.t.
- Hence bail out cleanly if 'dot' is not installed. See RT#105575. Thanx Karen Etheridge.
EOT

[V 2.04]
Date=2016-05-01T12:54:00
Comments= <<EOT
- Reduce required version of Perl from V 5.14.2 to 5.10.1. See RT#105577. Thanx Karen Etheridge.
- Reduce required version of File::Copy from V 2.26 to 2.14 to match.
- Remove 'use open qw(:std :utf8)' from all modules.
- See http://savage.net.au/Ron/html/My.Workflow.for.Building.Distros.html for notes on the
modernization of Makefile.PL.
- Remove Build.PL. See RT#105576. Thanx Karen Etheridge.
EOT

[V 2.03]
Date=2014-12-12T13:45:00
Comments= <<EOT
- 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.
EOT

[V 2.02]
Date=2014-12-04T14:11:00
Comments= <<EOT
- 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.
EOT

[V 2.01]
Date=2014-11-27T15:37:00
Comments= <<EOT
- 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.
EOT

[V 2.00]
Date=2014-09-09T09:36:00
Comments= <<EOT
- 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.
EOT

[V 1.14]
Date=2014-07-08T08:59:00
Comments=- Patch test files to report test counts.

[V 1.13]
Date=2014-05-27T08:31:00
Comments= <<EOT
- 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.
EOT

[V 1.12]
Date=2013-11-29T08:55:00
Comments= <<EOT
- 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.
EOT

[V 1.11]
Date=2013-06-06T15:46:00
Comments= <<EOT
- 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.
EOT

[V 1.10]
Date=2013-06-03T11:25:00
Comments= <<EOT
- 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.
EOT

[V 1.09]
Date=2013-05-31T09:57:00
Comments= <<EOT
- 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.
EOT

[V 1.08]
Date=2013-05-27T09:45:00
Comments= <<EOT
- 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.
EOT

[V 1.07]
Date=2012-11-08T12:38:00
Comments= <<EOT
- 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.
EOT

[V 1.06]
Date=2012-10-26T09:09:00
Comments= <<EOT
- 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().
EOT

[V 1.05]
Date=2012-10-16T09:49:00
Comments= <<EOT
- 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.
EOT

[V 1.04]
Date=2012-09-25T13:55:00
Comments= <<EOT
- 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.
EOT

[V 1.03]
Date=2012-09-03T09:28:00
Comments= <<EOT
- 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.
EOT

[V 1.02]
Date=2012-06-22T11:50:00
Comments= <<EOT
- 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).
EOT

[V 1.01]
Date=2012-02-08T11:22:00
Comments= <<EOT
- 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.*.
EOT

[V 1.00]
Date=2012-01-23T11:09:44
Comments=- Original version
