Copyright | (c) Ivan Lazar Miljenovic |
---|---|
License | 3-Clause BSD-style |
Maintainer | Ivan.Miljenovic@gmail.com |
Safe Haskell | None |
Language | Haskell2010 |
This module defines simple helper functions for use with Text.PrettyPrint. It also re-exports all the pretty-printing combinators from that module.
Note that the PrintDot
instances for Bool
, etc. match those
specified for use with Graphviz.
You should only be using this module if you are writing custom node
types for use with Data.GraphViz.Types. For actual printing of
code, use
(which produces a
printDotGraph
Text
value).
The Dot language specification specifies that any identifier is in one of four forms:
- Any string of alphabetic ([a-zA-Z\200-\377]) characters, underscores ('_') or digits ([0-9]), not beginning with a digit;
- a number [-]?(.[0-9]+ | [0-9]+(.[0-9]*)? );
- any double-quoted string ("...") possibly containing escaped quotes (\");
- an HTML string (<...>).
(Note that the first restriction is referring to a byte-by-byte
comparison using octal values; when using UTF-8 this corresponds to
all characters c
where ord c >= 128
.)
Due to these restrictions, you should only use text
when you are
sure that the Text
in question is static and quotes are
definitely needed/unneeded; it is better to use the Text
instance for PrintDot
. For more information, see the
specification page:
http://graphviz.org/doc/info/lang.html
- module Text.PrettyPrint.Leijen.Text.Monadic
- type DotCode = DotCodeM Doc
- data DotCodeM a
- runDotCode :: DotCode -> Doc
- renderDot :: DotCode -> Text
- class PrintDot a where
- unqtText :: Text -> DotCode
- dotText :: Text -> DotCode
- printIt :: PrintDot a => a -> Text
- addQuotes :: Text -> DotCode -> DotCode
- unqtEscaped :: [Char] -> Text -> DotCode
- printEscaped :: [Char] -> Text -> DotCode
- wrap :: DotCode -> DotCode -> DotCode -> DotCode
- commaDel :: (PrintDot a, PrintDot b) => a -> b -> DotCode
- printField :: PrintDot a => Text -> a -> DotCode
- angled :: DotCode -> DotCode
- fslash :: DotCode
- printColorScheme :: Bool -> ColorScheme -> DotCode
Documentation
A type alias to indicate what is being produced.
runDotCode :: DotCode -> Doc Source #
class PrintDot a where Source #
A class used to correctly print parts of the Graphviz Dot language.
Minimal implementation is unqtDot
.
unqtDot :: a -> DotCode Source #
The unquoted representation, for use when composing values to produce a larger printing value.
toDot :: a -> DotCode Source #
The actual quoted representation; this should be quoted if it
contains characters not permitted a plain ID String, a number
or it is not an HTML string. Defaults to unqtDot
.
unqtListToDot :: [a] -> DotCode Source #
The correct way of representing a list of this value when printed; not all Dot values require this to be implemented. Defaults to Haskell-like list representation.
listToDot :: [a] -> DotCode Source #
The quoted form of unqtListToDot
; defaults to wrapping double
quotes around the result of unqtListToDot
(since the default
implementation has characters that must be quoted).
unqtText :: Text -> DotCode Source #
For use with OverloadedStrings
to avoid ambiguous type variable errors.
dotText :: Text -> DotCode Source #
For use with OverloadedStrings
to avoid ambiguous type variable errors.
printIt :: PrintDot a => a -> Text Source #
Convert to DotCode; note that this has no indentation, as we can only have one of indentation and (possibly) infinite line lengths.
printEscaped :: [Char] -> Text -> DotCode Source #
Escape the specified chars as well as "
and then wrap the
result in quotes.
printColorScheme :: Bool -> ColorScheme -> DotCode Source #