module LWN.Page where import Text.Pandoc import Data.Time (getCurrentTime) import System.IO (Handle) import qualified Data.ByteString.Lazy as B (ByteString, hPut) import Data.String.Utils (split, strip) import Data.Maybe (catMaybes, fromJust, isNothing) import Data.Tree.NTree.TypeDefs (NTree) import Test.HUnit (Assertion, assertEqual) import Test.Framework (Test, testGroup) import Test.Framework.Providers.HUnit (testCase) import Text.XML.HXT.Core ( ArrowXml, IOSArrow, XmlTree, XNode, (>>>), (/>), (//>), getChildren, getText, hasAttrValue, hasName, mkName, none, processAttrl, processTopDown, runX, setElemName, xshow, when ) import Text.HandsomeSoup (css, parseHtml) import LWN.Article import XHTML data Page = -- | An LWN page with one article on it. ArticlePage { article :: Article } | -- | An LWN page with more than one article on it. These require -- different parsing and display functions than the single-article -- pages. FullPage { headline :: String, articles :: [Article] } instance XHTML Page where to_xhtml (ArticlePage a) = "" ++ "" ++ "
" ++ " " ++ "