packages feed

hexpat-iteratee-0.4: test/test1.hs

import Text.XML.Expat.Chunked
import Text.XML.Expat.Format

import Control.Monad
import Control.Monad.Trans
import qualified Data.ByteString as B
import Data.Iteratee
import Data.List.Class
import Data.Text (Text)
import qualified Data.Text as T
import System.IO


main :: IO ()
main = do
    eErr <- fileDriver (parse defaultParserOptions dump) "sudoku.xml"
    case eErr of
        Left err -> putStrLn $ "failed: "++show err
        Right () -> putStrLn ""

dump :: UNode IO Text -> XMLT IO ()
dump doc = do
    let txt = formatG doc
    execute $ forL txt $ liftIO . B.hPutStr stdout
  where
    mapL :: List c => (a -> ItemM c b) -> c a -> c b
    mapL f = joinM . liftM f
    joinM :: List c => c (ItemM c a) -> c a
    joinM = (>>= joinL . liftM return)
    forL = flip mapL