module StackedDag.Graphviz where import qualified Data.List as L import qualified Data.Text.Lazy as T import qualified Data.String as S import qualified Data.GraphViz as G import qualified Data.GraphViz.Attributes.Complete as GT import StackedDag.Base genAsciiFromDot :: T.Text -> T.Text genAsciiFromDot dot = S.fromString $ edgesToText labels edges where dg :: G.DotGraph String dg = G.parseDotGraph dot edges = mkEdges $ map (\v -> (read (G.fromNode v),([read (G.toNode v)]))) $ G.graphEdges dg getl' :: G.Attribute -> Maybe String getl' attr = case attr of (GT.Label (GT.StrLabel name)) -> Just (T.unpack name) (GT.Label name) -> Just (show name) _ -> Nothing getl :: G.Attributes -> String getl attrs = maybe "" id $ foldl (\s i-> s <> getl' i) Nothing attrs labels = mkLabels $ map (\v -> (read (G.nodeID v),getl (G.nodeAttributes v))) $ G.graphNodes dg