Modulegraphviz-2999.20.2.0Haskell2010
Data.GraphViz.Attributes.HTML
This module is written to be imported qualified. It defines the
syntax for HTML-like values for use in Graphviz. Please note that
these values are not really HTML, but the term "HTML" is used
throughout as it is less cumbersome than "HTML-like". To be able
to use this, the version of Graphviz must be at least 1.10. For
more information, please see:
http://graphviz.org/doc/info/shapes.html#html
The actual definition of the syntax specifies that these types must
be valid XML syntax. As such, this assumed when printing and parsing,
though the correct escape/descaping for ", &, < and > are
automatically done when printing and parsing.
Differences from how Graphviz treats HTML-like values:
Graphviz only specifies the above-listed characters must be
escaped; however, internally it also escapes -, ' and multiple
sequences of spaces. This library attempts to match this behaviour.
Please let me know if this behaviour (especially about escaping
multiple spaces) is unwanted.
When parsing escaped HTML characters, numeric escapes are
converted to the corresponding character as are the various characters
listed above; all other escaped characters (apart from those listed
above) are silently ignored and removed from the input (since
technically these must be valid XML, which doesn't recognise as many
named escape characters as does HTML).
All whitespace read in is kept (even if Graphviz would ignore
multiple whitespace characters); when printing them, however, they are
replaced with non-breaking spaces. As such, if multiple literal
whitespace characters are used in a sequence, then the result of
parsing and then printing some Dot code will not be the same as the
initial Dot code. Furthermore, all whitespace characters are printed
as spaces.
It is assumed that all parsed & values are the beginning of an
XML escape sequence (which must finish with a ; character).
There should be no pre-escaped characters in values; when
printing, the & will get escaped without considering if that is an
escaped character.