summaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Shared.hs
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2015-10-11 17:06:26 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2015-10-11 17:12:50 -0700
commit1e8a25ad69db8fa372ac4ddbb5ac05ffb00ed052 (patch)
tree3fe6a71ece6682bcf86b66a83051a573c448de33 /src/Text/Pandoc/Shared.hs
parent04307a155407480c2bedd4c6f9c121640ba47b11 (diff)
Percent-encode more special characters in URLs.
HTML, LaTeX writers adjusted. The special characters are '<','>','|','"','{','}','[',']','^', '`'. Closes #1640, #2377.
Diffstat (limited to 'src/Text/Pandoc/Shared.hs')
-rw-r--r--src/Text/Pandoc/Shared.hs7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs
index 1fe3db5f7..1e06aa383 100644
--- a/src/Text/Pandoc/Shared.hs
+++ b/src/Text/Pandoc/Shared.hs
@@ -288,9 +288,12 @@ toRomanNumeral x =
_ | x >= 1 -> "I" ++ toRomanNumeral (x - 1)
_ -> ""
--- | Escape whitespace in URI.
+-- | Escape whitespace and some punctuation characters in URI.
escapeURI :: String -> String
-escapeURI = escapeURIString (not . isSpace)
+escapeURI = escapeURIString (not . needsEscaping)
+ where needsEscaping c = isSpace c || c `elem`
+ ['<','>','|','"','{','}','[',']','^', '`']
+
-- | Convert tabs to spaces and filter out DOS line endings.
-- Tabs will be preserved if tab stop is set to 0.