dotgen-0.4.3: A simple interface for building .dot graph files.

CopyrightAndy Gill
LicenseBSD3
MaintainerAndy Gill <andygill@ku.edu>
Stabilityunstable
Portabilityportable
Safe HaskellSafe
LanguageHaskell2010

Text.Dot

Contents

Description

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.

Synopsis

Dot

data Dot a Source #

Instances
Monad Dot Source # 
Instance details

Defined in Text.Dot

Methods

(>>=) :: Dot a -> (a -> Dot b) -> Dot b #

(>>) :: Dot a -> Dot b -> Dot b #

return :: a -> Dot a #

fail :: String -> Dot a #

Functor Dot Source # 
Instance details

Defined in Text.Dot

Methods

fmap :: (a -> b) -> Dot a -> Dot b #

(<$) :: a -> Dot b -> Dot a #

Applicative Dot Source # 
Instance details

Defined in Text.Dot

Methods

pure :: a -> Dot a #

(<*>) :: Dot (a -> b) -> Dot a -> Dot b #

liftA2 :: (a -> b -> c) -> Dot a -> Dot b -> Dot c #

(*>) :: Dot a -> Dot b -> Dot b #

(<*) :: Dot a -> Dot b -> Dot a #

Nodes

node :: [(String, String)] -> Dot NodeId Source #

node takes a list of attributes, generates a new node, and gives a NodeId.

data NodeId Source #

Instances
Show NodeId Source # 
Instance details

Defined in Text.Dot

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

edge :: NodeId -> NodeId -> [(String, String)] -> Dot () Source #

edge generates an edge between two NodeIds, with attributes.

edge' :: NodeId -> Maybe String -> NodeId -> Maybe String -> [(String, String)] -> Dot () Source #

edge generates an edge between two NodeIds, with optional node sub-labels, and attributes.

(.->.) :: NodeId -> NodeId -> Dot () Source #

.->. generates an edge between two NodeIds.

Showing a graph

Other combinators

scope :: Dot a -> Dot a Source #

scope groups a subgraph together; in dot these are the subgraphs inside "{" and "}".

attribute :: (String, String) -> Dot () Source #

attribute gives a attribute to the current scope.

share :: [(String, String)] -> [NodeId] -> Dot () Source #

share is when a set of nodes share specific attributes. Usually used for layout tweaking.

same :: [NodeId] -> Dot () Source #

same provides a combinator for a common pattern; a set of NodeIds with the same rank.

cluster :: Dot a -> Dot (NodeId, a) Source #

cluster builds an explicit, internally named subgraph (called cluster).

Simple netlist generation

netlistGraph Source #

Arguments

:: 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.