{-# LANGUAGE BangPatterns #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiWayIf #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} module Main where import Zenacy.HTML import Control.Monad import Data.Default ( Default(..) ) import qualified Data.Text as T ( unpack ) import qualified Data.Text.IO as T ( readFile ) import System.Environment ( getArgs ) -- | Application main. main :: IO () main = getArgs >>= \case (x:[]) -> validate x _otherwise -> pure () validate :: FilePath -> IO () validate x = do a <- T.readFile x let p = htmlParse def { htmlOptionLogErrors = True } case p a of Left (HTMLError {..}) -> do putStrLn $ T.unpack htmlErrorText Right (HTMLResult {..}) -> do if | null htmlResultErrors -> putStrLn "no warnings" | otherwise -> do forM_ htmlResultErrors ( putStrLn . T.unpack . htmlErrorText )