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