on master help sign in
Add escapeHtml function
commit12b4e8a0b276829747dffd45ddb6fd89d0c61454 authorJasper Van der Jeugt <m@jaspervdj.be> dateFri 25 Nov 2011, 23:05 (15 years ago) parent3a4b45e
3 files changed+23−2
src/Hakyll/Web/Blaze.hs+2−2 src/Hakyll/Web/Util/Html.hs+17 tests/Hakyll/Web/Util/Html/Tests.hs+4
src/Hakyll/Web/Blaze.hs+2−2
@@ -12,8 +12,8 @@ import Text.Blaze (Html, toHtml, preEscapedString)
1212import Hakyll.Web.Page
1313import Hakyll.Web.Page.Metadata
1414
15−-- | Get a field from a page and convert it to HTML. This version does escape
16−-- the given HTML
15+-- | Get a field from a page and convert it to HTML. This version does not
16+-- escape the given HTML
1717--
1818getFieldHtml :: String -> Page a -> Html
1919getFieldHtml key = preEscapedString . getField key
src/Hakyll/Web/Util/Html.hs+17
@@ -2,8 +2,12 @@
22--
33module Hakyll.Web.Util.Html
44 ( stripTags
5+ , escapeHtml
56 ) where
67
8+import Text.Blaze (toHtml)
9+import Text.Blaze.Renderer.String (renderHtml)
10+
711-- | Strip all HTML tags from a string
812--
913-- Example:
@@ -28,3 +32,16 @@ stripTags :: String -> String
2832stripTags [] = []
2933stripTags ('<' : xs) = stripTags $ drop 1 $ dropWhile (/= '>') xs
3034stripTags (x : xs) = x : stripTags xs
35+
36+-- | HTML-escape a string
37+--
38+-- Example:
39+--
40+-- > escapeHtml "Me & Dean"
41+--
42+-- Result:
43+--
44+-- > "Me &amp; Dean"
45+--
46+escapeHtml :: String -> String
47+escapeHtml = renderHtml . toHtml
tests/Hakyll/Web/Util/Html/Tests.hs+4
@@ -15,4 +15,8 @@ tests = concat
1515 , "foo bar" @=? stripTags "<p>foo</p> bar"
1616 , "foo" @=? stripTags "<p>foo</p"
1717 ]
18+ , fromAssertions "escapeHtml"
19+ [ "Me &amp; Dean" @=? escapeHtml "Me & Dean"
20+ , "&lt;img&gt;" @=? escapeHtml "<img>"
21+ ]
1822 ]