I am pleased to announce version 2999.5.0.0 [1] of the graphviz [2] 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
[1] http://hackage.haskell.org/packages/archive/graphviz/2999.5.0.0/graphviz-2999.5.0.0.tar.gz [2] http://hackage.haskell.org/package/graphviz The graphviz package provides bindings to the GraphViz [3] suite of programs by providing the ability to generate and parse GraphViz's Dot [4] language as well as wrappers around the tools themselves. [3] http://www.graphviz.org/ [4] http://www.graphviz.org/doc/info/lang.html This is an almost complete re-write of the previously released version (2999.1.0.2): 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 Mayr. * Allow custom arrow types as supported by GraphViz; as requested by Han Joosten. * 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.miljeno...@gmail.com IvanMiljenovic.wordpress.com _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe