diff options
author | Jasper Van der Jeugt <m@jaspervdj.be> | 2013-06-15 20:15:33 +0200 |
---|---|---|
committer | Jasper Van der Jeugt <m@jaspervdj.be> | 2013-06-15 20:15:33 +0200 |
commit | 537e72333f8deafa59219b60dcae0a4f52569317 (patch) | |
tree | adfc1212c510ff8196ef1ac99139083978a88db2 | |
parent | a591b1622fe9608bc1dc485b74a54730c958bf4d (diff) | |
download | hakyll-537e72333f8deafa59219b60dcae0a4f52569317.tar.gz |
Sanitize URLs in toUrl
Closes #163
-rw-r--r-- | src/Hakyll/Web/Html.hs | 12 | ||||
-rw-r--r-- | tests/Hakyll/Web/Html/Tests.hs | 7 |
2 files changed, 14 insertions, 5 deletions
diff --git a/src/Hakyll/Web/Html.hs b/src/Hakyll/Web/Html.hs index 58b5c43..d06b7c2 100644 --- a/src/Hakyll/Web/Html.hs +++ b/src/Hakyll/Web/Html.hs @@ -98,9 +98,17 @@ renderTags' = TS.renderTagsOptions TS.renderOptions -- Result: -- -- > "/foo/bar.html" +-- +-- This also sanitizes the URL, e.g. converting spaces into '%20' toUrl :: FilePath -> String -toUrl ('/' : xs) = '/' : xs -toUrl url = '/' : url +toUrl url = case url of + ('/' : xs) -> '/' : sanitize xs + xs -> '/' : sanitize xs + where + -- This probably needs to be a separate function + sanitize = concatMap $ \c -> case c of + ' ' -> "%20" + _ -> [c] -------------------------------------------------------------------------------- diff --git a/tests/Hakyll/Web/Html/Tests.hs b/tests/Hakyll/Web/Html/Tests.hs index bfb6b7c..a33823c 100644 --- a/tests/Hakyll/Web/Html/Tests.hs +++ b/tests/Hakyll/Web/Html/Tests.hs @@ -43,9 +43,10 @@ tests = testGroup "Hakyll.Web.Html.Tests" $ concat ] , fromAssertions "toUrl" - [ "/foo/bar.html" @=? toUrl "foo/bar.html" - , "/" @=? toUrl "/" - , "/funny-pics.html" @=? toUrl "/funny-pics.html" + [ "/foo/bar.html" @=? toUrl "foo/bar.html" + , "/" @=? toUrl "/" + , "/funny-pics.html" @=? toUrl "/funny-pics.html" + , "/funny%20pics.html" @=? toUrl "funny pics.html" ] , fromAssertions "toSiteRoot" |