[Haskell-cafe] ANNOUNCE: graphviz-29188.8.131.52
Ivan Lazar Miljenovic
ivan.miljenovic at gmail.com
Wed Sep 9 05:59:07 EDT 2009
I am pleased to announce version 29184.108.40.206  of the graphviz 
package for Haskell. This is what I like to think of as the "Hey, this
is almost getting to be a decent library!" version :p
The graphviz package provides bindings to the GraphViz  suite of programs
by providing the ability to generate and parse GraphViz's Dot 
language as well as wrappers around the tools themselves.
This is an almost complete re-write of the previously released version
(29220.127.116.11): I do not mean that this version was re-written from
scratch, but substantial portions of the library have been improved or
replaced. As such, current users of this library will unfortunately
have to update their code that uses it. The major changes (becuase
there's probably heaps of smaller changes I've forgotten about) are:
* Parsing and printing of Dot code was re-written to use the new
ParseDot and PrintDot classes rather than the old Parseable class and
the Show class. What this means for the end-user is that quotation
problems should finally all be resolved (I hope...). In particular,
proper quotation of String values is now done automagically: if it is
found that the String to be printed requires quoting (because it does
not match the format required for non-quoted String values), then
quotes within the String are escaped and the entire String is quoted.
As part of this, the Data.GraphViz.ParserCombinators module has been
moved to Data.GraphViz.Types.Parsing.
* Re-write the various Dot* datatypes in Data.GraphViz.Types.
Sub-graphs/clusters are now their own entity rather than being part
of DotNode and the Node ID type is now a type parameter rather than
being just Int. Sub-graphs/clusters can now also be parsed. DotGraph
and DotSubGraph now both contain a "DotStatements" value, which in
turn contains global attributes, subgraphs, nodes and edges.
* The various conversion functions in Data.GraphViz now come in two
flavours: the unprimed versions take in a Bool indicating if the
graph is directed or not; the primed versions attempt to
automatically detect this. Also add cluster support for the graph
-> dot -> graph conversion-style functions, as requested by Nikolas
* Allow custom arrow types as supported by GraphViz; as requested by
* Fixed a bug in HSV-style Color values where Int was used instead of
Double; spotted by Michael deLorimier.
* Properly resolved the situation initially spotted by Neil Brown:
Matthew Sackman was following Dot terminology for an edge `a -> b'
when using "head" for `b' and "tail" for `a' (this is presumably
because the head/tail of the arrow are at those nodes). DotEdge now
uses "from" and "to" avoid ambiguity; the various Attribute values
still follow upstream usage.
This should hopefully be the last update that is such an intrusive
change. The next release will most likely contain updates on how to
specify a particular output to use (including variants), with most of
the rest remain as-is.
Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com
More information about the Haskell-Cafe