{-# OPTIONS_GHC -Wall #-} module Main where import ALON.Diff.HTML (buildChunkTreeFromHTML) import qualified Data.Text as T import Data.Text.Lazy (toStrict) import Data.Text.Lazy.Encoding (decodeUtf8) import qualified Data.ByteString.Lazy as L import System.IO (hPutStrLn, stderr) import System.IO.Error (IOError) import System.Exit (exitFailure) import Control.Exception (catch) import System.Environment (getArgs) readUTF8File :: String -> IO T.Text readUTF8File filePath = L.readFile filePath `catch` errorHandler >>= return . toStrict . decodeUtf8 where errorHandler e = let _ = (e :: IOError) in hPutStrLn stderr ("Error opening HTML file " ++ filePath) >> exitFailure main :: IO () main = do args <- getArgs case args of (htmlFile:_) -> do htmlText <- readUTF8File htmlFile putStrLn $ show $ buildChunkTreeFromHTML htmlText _ -> hPutStrLn stderr "Expected at least one command line parameter"