X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;ds=inline;f=src%2FLWN%2FArticle.hs;h=aa267903a445b790b9d7e481025b15b87fc4fd4d;hb=644340dda817a432174236d243c668d43b3dc4a1;hp=9d4c85868be9f25299eabd79604249e56474f1ca;hpb=f3321e2ce7d7645ad562dc8f6620bfd561edc75d;p=dead%2Flwn-epub.git diff --git a/src/LWN/Article.hs b/src/LWN/Article.hs index 9d4c858..aa26790 100644 --- a/src/LWN/Article.hs +++ b/src/LWN/Article.hs @@ -14,6 +14,12 @@ import Test.HUnit (Assertion, assertEqual) import Test.Framework (Test, testGroup) import Test.Framework.Providers.HUnit (testCase) import Text.Regex.Posix ((=~)) +import Text.XML.HXT.Core ( + selem, + none, + runX, + txt, + xshow) import LWN.URI ( add_trailing_slash, @@ -21,7 +27,7 @@ import LWN.URI ( try_make_absolute_url, make_https) -import LWN.XHTML (XHTML, to_xhtml) +import LWN.XHTML (XHTML, XML, to_xhtml, to_xml) newtype Title = Title { getTitle :: String } newtype Byline = Byline { getByline :: Maybe String } @@ -47,17 +53,36 @@ instance XHTML Byline where instance XHTML BodyHtml where to_xhtml = getBodyHtml + +instance XML Title where + to_xml (Title t) = + selem "h2" [ txt t ] + +instance XML Byline where + to_xml (Byline (Just bl)) = + selem "p" [ selem "em" [ txt bl ] ] + to_xml (Byline Nothing) = none + +instance XML BodyHtml where + -- Don't question this. I tried to do it correctly and + -- all hell broke loose. + to_xml (BodyHtml bh) = txt bh + data Article = Article { title :: Title, byline :: Byline, body_html :: BodyHtml } instance XHTML Article where to_xhtml (Article t bl b) = + "
Hello, world!
" + input_article = Article t bl b + + + article_tests :: Test article_tests = testGroup "Article Tests" [ @@ -121,4 +171,5 @@ article_tests = test_current_bigpage_article_path, testCase "Numbered article path constructed" test_numbered_article_path, testCase "Full article path left alone" test_full_article_path, - testCase "Non-https URL made https" test_non_https_article_path ] + testCase "Non-https URL made https" test_non_https_article_path, + testCase "The to_xml function works on a trivial example" test_to_xml ]