module Main ( main ) where

import Text.PrettyPrint.HughesPJ ( render )
import System.IO ( hGetContents, stdin )

import Text.XHtml.Validate
import Text.XML.HaXml.Pretty

-- | Test harness. FIXME integrate this better.
-- FIXME take command-line arguments:
--   - verbosity
--   - read files, otherwise suck on stdin (ala cat)
main :: IO ()
main =
  do contents <- hGetContents stdin
     putStrLn $ "Input:\n" ++ contents
     (doc, errs) <- validate "xhtml1-strict.dtd" "stdin" preFixup xhtmlfilter contents
     case errs of
       [] -> putStrLn $ "Validated OK\n" ++ render doc
       _  ->
         do sequence_ $ map putStrLn $ "Errors: " : errs ++ ["Result of filter:"]
            case cleanHTML "blah" preFixup xhtmlfilter contents of
              CRerror str  -> putStrLn $ "Error: " ++ str
              CRout cs     -> putStrLn $ show $ map (render . content) cs

--             let contents' = "<div align=\"blah\">" ++ preFixup contents ++ "</div>"
--                 Document _p _s e _m = htmlParse "stdin" contents'
--             sequence_ $ map (putStrLn . render . content) $
--     (doc, errs) <- validate "xhtml1-strict.dtd" "stdin" preFixup (fixup id urlFixup) contents
--              Right (_, c) -> putStrLn c
--           in
--             case xmlParse' "stdin" contents' of
--               Left str -> putStrLn $ "Parse failed: " ++ str
--               Right (Document _p _s e _m) ->
--                 do 

