{-# LANGUAGE OverloadedStrings #-} module Internal.Elements (getTitle) where import Text.XML import qualified Data.Map as M import Data.Text as Txt import Control.Concurrent.MVar import Internal getTitle :: Session -> IO Text getTitle session = getTitle' <$> documentRoot <$> document <$> readMVar session getTitle' (Element "title" _ childs) = Txt.concat [txt | NodeContent txt <- childs] getTitle' (Element "h1" _ childs) = Txt.concat [txt | NodeContent txt <- childs] getTitle' (Element _ _ childs) -- FIXME: Caught Rhapsode bug repaired here, needs that filtering condition. | title:_ <- [getTitle' el | NodeElement el <- childs, getTitle' el /= ""] = title | otherwise = ""