packages feed

context-free-art-0.3.0.1: examples/Main.hs

module Main where

import Art.ContextFree.Definite
import qualified Data.Text.Lazy.IO as T
import System.Directory
import Text.Blaze.Svg.Renderer.Text
import Spiral
import Sierpinski.Triangle
import Sierpinski.Carpet

baseDir :: String
baseDir = "res"

imagePath :: String -> String
imagePath name = baseDir <> "/" <> name <> ".svg"

renderTmp :: String -> Symbol -> IO ()
renderTmp name symbol = do
  let path = imagePath name
  putStrLn $ "Writing " <> path
  createDirectoryIfMissing True baseDir
  T.writeFile path $ renderSvg $ render symbol

images :: [(String, Symbol)]
images =
  [ ("spiral", spiral)
  , ("sierpinski-triangle", sierpinskiTriangle)
  , ("sierpinski-carpet", sierpinskiCarpet)
  ]

main :: IO ()
main = mapM_ (uncurry renderTmp) images