Changes for version 2.10 - 2013-06-24
- Overview: Re-work the label and port handing code.
- Note: the global graph attribute 'record_orientation' no longer does anything. The new label syntax, (next, and in detail in the FAQ (https://metacpan.org/module/GraphViz2#How-labels-interact-with-ports) ), is now the recommended way of using labels to specify both ports and orientation. Using 'record_orientation' will not cause parameter validation to fail, it just won't have any effect. The attribute will be removed in a future version, so prepare now by deleting it from your code.
- Labels can be a string, an arrayref of strings, or an arrayref of hashrefs. The latter alternative is new. The keys to the hashrefs are 'text' and 'port', with the latter being optional. See the FAQ topic mentioned above. See scripts/record.2.pl for sample code. Many thanx to Kent Fredick for the report (RT#85976), and the list of suggestions.
- Add scripts/record.3.pl and add it to the demo generating code scripts/generate.*.sh. It demonstrates deeply nested record structures using a string as a label. The same effect could be achieved by using an arrayref of hashrefs, of course. scripts/record.2.pl shows how.
- Stop escaping the 2 label characters { and }, since they are used to orient fields within records. On the demo page http://savage.net.au/Perl-modules/html/graphviz2/, see scripts/record.*.pl. Expand the FAQ discussion of escaping to cover this issue.
- Remove restriction that port names in calls to add_edge() had to start with 'port'. This was due to my misreading of the Graphviz docs, where all examples used a 'port' prefix. The code also now checks for '*::*', in case the program is using Perl classes for node names, in which case we don't want the first ':' to be taken as the introduction for a port name.
- Update words/tokens (arrow shapes etc) stored within the source code, by running scripts/extract.*.pl and storing the output in lib/GraphViz2.pm after the __DATA__ token. Yes, I know this is hard-coding. See the amazing module Data::Section::Simple for details. The set of words/tokens matches Graphviz 2.30.1, as of today, 2013-06-24.
- Rename CHANGES to Changes as per CPAN::Changes::SPEC.
- Reformat the POD in lib/GraphViz2.pm slightly.
- Remove scripts/parse.marpa.pl and t/sample.marpa.1.dat, as a step in removing all Marpa-related material, because it uses the deprecated NAIF interface. All new Marpa work should use the scanless interface (SCIF).
- Change Build.PL and Makefile.PL to check for Perl being at least V 5.14.0. If you are using an earlier version, you can forgo utf8 support by editing the files to relax this restriction. Some tests (utf8.pl, utf8.test.pl) will presumably fail as a consequence. Lastly, my attention has been drawn to Unicode::Semantics::up(), but I've chosen not to use it.
Modules
A wrapper for AT&T's Graphviz
Visualize a database schema as a graph
Visualize a data structure as a graph
Visualize N Perl class hierarchies as a graph
Visualize a Marpa grammar as a graph
Visualize a Parse::RecDescent grammar as a graph
Visualize a Perl regular expression as a graph
Visualize a Set::FA::Element state transition table as a graph
Visualize XML as a graph
Visualize a yacc grammar as a graph
Visualize a yapp grammar as a graph
Some utils to simplify testing