module Html
where
import Test.HUnit
import Text.HTML.TagSoup.Entity (lookupEntity)
replace_entities :: String -> String
replace_entities [] = []
replace_entities ('&':xs) =
let (b, a) = break (== ';') xs in
case (lookupEntity b, a) of
(Just c, ';':as) -> c : replace_entities as
_ -> '&' : replace_entities xs
replace_entities (x:xs) = x : replace_entities xs
html_tests :: [Test]
html_tests = [ test_replace_entities ]
test_replace_entities :: Test
test_replace_entities =
TestCase $ assertEqual description expected_text actual_text
where
description = "All entities are replaced correctly."
actual_text =
replace_entities $
""The moon is gay……" " ++
"said <insert the current president of the " ++
"United States of America>. “It’s " ++
"OK—–he’s not a real doctor.”"
expected_text =
"\"The moon is gay……\" said . " ++
"“It’s OK—–he’s not a real doctor.”"