{-# LANGUAGE NoMonomorphismRestriction #-} {-# LANGUAGE FlexibleInstances #-} import Data.Char import Text.HTML.TagSoup import Text.HTML.TagSoup.Tree import System.IO import Control.Monad.State import Data.Generics.Uniplate.Direct import Debug.Trace import Control.Applicative import Control.Arrow import Data.Function import Data.List main = domain "testinput.html" domain str = do handle <- openFile str ReadMode handleOut <- openFile "template.html" WriteMode hSetEncoding handle utf8_bom hSetEncoding handleOut utf8_bom sourceHtml <- hGetContents handle let (template, contents) = templateify sourceHtml forM (zip contents [1..]) $ \(content,serial) -> do handleContent <- openFile ("content_"++(show serial)++".html") WriteMode hSetEncoding handleContent utf8_bom hPutStr handleContent content hClose handleContent hSetEncoding handle utf8_bom hSetEncoding stdout utf8_bom hPutStr handleOut template hClose handleOut eg = templateify egStr egStr = "