module Data.Aviation.Casr.Logbook.Printer.Html (
  Html(..)
, printHtml
, writeHtmlFile
) where

class Html s where
  html ::
    s
    -> String

instance Html Char where
  html '&' =
    "&"
  html c =
    [c]
    
instance Html Int where
  html =
    show
    
instance Html a => Html [a] where
  html =
    (=<<) html

printHtml ::
  Html s =>
  s
  -> IO ()
printHtml =
  putStrLn . html

writeHtmlFile ::
  Html s =>
  FilePath
  -> s
  -> IO ()
writeHtmlFile p =
  writeFile p . html