-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Generate Graphviz documents from a Haskell representation. -- @package dataflow @version 0.1.0.0 module DataFlow.Core type ID = String type Name = String type Operation = String type Description = String -- | The top level diagram. data Diagram Diagram :: Name -> [Object] -> Diagram -- | An object in a diagram. data Object Client :: ID -> Name -> Object TrustBoundary :: ID -> Name -> [Object] -> Object Process :: ID -> Name -> Object Database :: ID -> Name -> Object Edge :: ID -> ID -> Operation -> Description -> Object type Indent = Int type Step = Int data GenState GenState :: Indent -> Step -> GenState -- | The monad stack for generating output based on Diagram. type Gen t = WriterT [String] (State GenState) t write :: String -> Gen () incrStep :: Gen () nextStep :: Gen Int indent :: Gen () dedent :: Gen () withIndent :: Gen () -> Gen () blank :: Gen () label :: Gen () -> Gen () tag :: String -> String -> Gen () -> Gen () bold :: Gen () -> Gen () table :: String -> Gen () -> Gen () tr :: Gen () -> Gen () td :: Gen () -> Gen () type Enclosing = (Char, Char) brackets :: Enclosing curlyBrackets :: Enclosing objectWith :: Enclosing -> ID -> Gen () -> Gen () useFont :: ID -> String -> Gen () instance Show Object instance Eq Object module DataFlow.DFD -- | Type class for types that can be rendered as DFD. class DFD t dfd :: DFD t => t -> Gen () -- | Generates the DFD output as a String. runDfd :: Diagram -> String -- | Prints the DFD output to stdout. printDfd :: Diagram -> IO () instance DFD Diagram instance DFD Object