Skip to content

Commit 391225e

Browse files
committed
Create helper function for conversion between XML and XHTML.
1 parent 3378ef4 commit 391225e

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

haddock-test/haddock-test.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ library
1616
default-language: Haskell2010
1717
ghc-options: -Wall
1818
hs-source-dirs: src
19-
build-depends: base, directory, process, filepath, Cabal, xml, syb
19+
build-depends: base, directory, process, filepath, Cabal, xml, xhtml, syb
2020

2121
exposed-modules:
2222
Test.Haddock

haddock-test/src/Test/Haddock/Xhtml.hs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import Data.Generics.Aliases
1313
import Data.Generics.Schemes
1414

1515
import Text.XML.Light
16+
import Text.XHtml
1617

1718

1819
newtype Xhtml = Xhtml
@@ -72,3 +73,21 @@ stripFooter =
7273
[ qName attrKey == "id"
7374
, attrVal == "footer"
7475
]
76+
77+
78+
xmlElementToXhtml :: Element -> Html
79+
xmlElementToXhtml (Element { .. }) =
80+
tag (qName elName) contents ! attrs
81+
where
82+
contents = mconcat $ map xmlContentToXhtml elContent
83+
attrs = map xmlAttrToXhtml elAttribs
84+
85+
86+
xmlContentToXhtml :: Content -> Html
87+
xmlContentToXhtml (Elem el) = xmlElementToXhtml el
88+
xmlContentToXhtml (Text text) = toHtml $ cdData text
89+
xmlContentToXhtml (CRef cref) = noHtml
90+
91+
92+
xmlAttrToXhtml :: Attr -> HtmlAttr
93+
xmlAttrToXhtml (Attr { .. }) = strAttr (qName attrKey) attrVal

0 commit comments

Comments
 (0)