tagsoup-ht-0.2: example/Validate.hs
{-
Example program for TagSoup.
Detects basic syntax errors like isolated ampersands and unquoted attribute values.
-}
module Main where
import Text.HTML.TagSoup.HT.Parser
import qualified Text.HTML.TagSoup.HT.Position as Position
import qualified Text.HTML.TagSoup.HT.PositionTag as PosTag
import qualified Text.HTML.TagSoup.HT.Tag as Tag
import System.Environment (getArgs)
import Data.Maybe (mapMaybe)
validate :: FilePath -> String -> String
validate fileName input =
let tags :: [PosTag.T Char]
tags = runSoupWithPositionsName fileName input
warnings =
mapMaybe (\(pos,tag) -> fmap ((,) pos) $ Tag.maybeWarning tag) tags
in unlines $ map (\(pos,msg) -> Position.toReportText pos ++ " " ++ msg) warnings
validateIO :: FilePath -> IO ()
validateIO fileName =
do text <- readFile fileName
putStrLn (validate fileName text)
main :: IO ()
main = mapM_ validateIO =<< getArgs