packages feed

rest-rewrite-0.1: src/WQODot.hs

module WQODot where

import Data.Hashable
import qualified Data.Set as S

import Language.REST.Dot
import Language.REST.PartialOrder
import Language.REST.WQO

toDigraph :: (Ord a, Hashable a, Show a) => WQO a -> DiGraph
toDigraph wqo = digraph where

  digraph = DiGraph "wqo" nodes edges

  labelFor ec = 'n' : show (abs $ hash ec)

  nodes = S.map toNode (getECs wqo)
  edges = S.fromList $ map toEdge (toList $ getPO wqo)

  toNode ec         = Node (labelFor ec) (show ec) "solid" "black"
  toEdge (ec1, ec2) = Edge (labelFor ec1) (labelFor ec2) "" "black" "" "solid"