module HGraph.Undirected.Output
  ( toDot
  )
where

import HGraph.Undirected
import Data.List

toDot :: t a -> [Char]
toDot t a
g = [Char]
"graph {\n  "
  [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
";\n  " ((a -> [Char]) -> [a] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map a -> [Char]
forall a. Show a => a -> [Char]
show ([a] -> [[Char]]) -> [a] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ t a -> [a]
forall a. t a -> [a]
forall (t :: * -> *) a. UndirectedGraph t => t a -> [a]
vertices t a
g) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
";\n"
  [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
";\n  " (((a, a) -> [Char]) -> [(a, a)] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map (\(a
v,a
u) -> a -> [Char]
forall a. Show a => a -> [Char]
show a
v [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
" -- " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ a -> [Char]
forall a. Show a => a -> [Char]
show a
u) ([(a, a)] -> [[Char]]) -> [(a, a)] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ t a -> [(a, a)]
forall a. t a -> [(a, a)]
forall (t :: * -> *) a. UndirectedGraph t => t a -> [(a, a)]
edges t a
g) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
";\n}"