Copyright | Andy Gill |
---|---|
License | BSD3 |
Maintainer | Andy Gill <andygill@ku.edu> |
Stability | unstable |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell98 |
This module provides a simple interface for building .dot graph files, for input into the dot and graphviz tools. It includes a monadic interface for building graphs.
- data Dot a
- node :: [(String, String)] -> Dot NodeId
- data NodeId
- userNodeId :: Int -> NodeId
- userNode :: NodeId -> [(String, String)] -> Dot ()
- edge :: NodeId -> NodeId -> [(String, String)] -> Dot ()
- edge' :: NodeId -> Maybe String -> NodeId -> Maybe String -> [(String, String)] -> Dot ()
- (.->.) :: NodeId -> NodeId -> Dot ()
- showDot :: Dot a -> String
- scope :: Dot a -> Dot a
- attribute :: (String, String) -> Dot ()
- share :: [(String, String)] -> [NodeId] -> Dot ()
- same :: [NodeId] -> Dot ()
- cluster :: Dot a -> Dot (NodeId, a)
- netlistGraph :: Ord a => (b -> [(String, String)]) -> (b -> [a]) -> [(a, b)] -> Dot ()
Dot
Nodes
userNodeId :: Int -> NodeId Source
userNodeId
allows a user to use their own (Int-based) node id's, without needing to remap them.
userNode :: NodeId -> [(String, String)] -> Dot () Source
userNode
takes a NodeId, and adds some attributes to that node.
Edges
Showing a graph
Other combinators
scope :: Dot a -> Dot a Source
scope
groups a subgraph together; in dot these are the subgraphs inside "{" and "}".
share :: [(String, String)] -> [NodeId] -> Dot () Source
share
is when a set of nodes share specific attributes. Usually used for layout tweaking.
cluster :: Dot a -> Dot (NodeId, a) Source
cluster
builds an explicit, internally named subgraph (called cluster).
Simple netlist generation
:: Ord a | |
=> (b -> [(String, String)]) | Attributes for each node |
-> (b -> [a]) | Out edges leaving each node |
-> [(a, b)] | The netlist |
-> Dot () |
netlistGraph
generates a simple graph from a netlist.