git.iko.soy/typeable/pandoc
on master help sign in
Fixed problems with obfuscateLink introduced by last round

of changes. Changed type so that text parameter is String, not HTML, which allows easier testing for autolinks. git-svn-id: https://pandoc.googlecode.com/svn/trunk@819 788f1e2b-df1e-0410-8736-df70ead52e1b

commitf273965e16317af4e0756db4fa24a0d8fe296d7b authorfiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> dateSat 28 Jul 2007, 06:38 (19 years ago) parentd340458
1 file changed+11−14
src/Text/Pandoc/Writers/HTML.hs+11−14
src/Text/Pandoc/Writers/HTML.hs+11−14
@@ -131,26 +131,23 @@ footnoteSection opts notes =
131131 hr +++ (olist << notes)
132132
133133-- | Obfuscate a "mailto:" link using Javascript.
134−obfuscateLink :: WriterOptions -> Html -> String -> Html
134+obfuscateLink :: WriterOptions -> String -> String -> Html
135135obfuscateLink opts text src =
136− let emailRegex = mkRegex "mailto:*([^@]*)@(.*)"
137− text' = show $ text
136+ let emailRegex = mkRegex "^mailto:([^@]*)@(.*)$"
138137 src' = map toLower src in
139138 case (matchRegex emailRegex src') of
140139 (Just [name, domain]) ->
141140 let domain' = substitute "." " dot " domain
142141 at' = obfuscateChar '@'
143142 (linkText, altText) =
144− if "mailto:" `isPrefixOf` src' &&
145− text' == drop 7 src'
146− then ("e", name ++ " at " ++ domain')
147− else ("'" ++ text' ++ "'",
148− text' ++ " (" ++ name ++ " at " ++
149− domain' ++ ")") in
143+ if text == drop 7 src' -- autolink
144+ then ("'<code>'+e+'</code>'", name ++ " at " ++ domain')
145+ else ("'" ++ text ++ "'", text ++ " (" ++ name ++ " at " ++
146+ domain' ++ ")") in
150147 if writerStrictMarkdown opts
151148 then -- need to use primHtml or &'s are escaped to &amp; in URL
152149 primHtml $ "<a href=\"" ++ (obfuscateString src')
153− ++ "\">" ++ (obfuscateString text') ++ "</a>"
150+ ++ "\">" ++ (obfuscateString text) ++ "</a>"
154151 else (script ! [thetype "text/javascript"] $
155152 primHtml ("\n<!--\nh='" ++
156153 obfuscateString domain ++ "';a='" ++ at' ++ "';n='" ++
@@ -158,7 +155,7 @@ obfuscateLink opts text src =
158155 "document.write('<a h'+'ref'+'=\"ma'+'ilto'+':'+e+'\">'+" ++
159156 linkText ++ "+'<\\/'+'a'+'>');\n// -->\n")) +++
160157 noscript (primHtml $ obfuscateString altText)
161− _ -> anchor ! [href src] $ text -- malformed email
158+ _ -> anchor ! [href src] $ primHtml text -- malformed email
162159
163160-- | Obfuscate character as entity.
164161obfuscateChar :: Char -> String
@@ -369,11 +366,11 @@ inlineToHtml opts inline =
369366 else return ()
370367 return $ stringToHtml str
371368 (HtmlInline str) -> return $ primHtml str
372− (Link [Code str] (src,tit)) | src == "mailto:" ++ str ->
373− return $ obfuscateLink opts (stringToHtml str) src
369+ (Link [Code str] (src,tit)) | "mailto:" `isPrefixOf` src ->
370+ do return $ obfuscateLink opts str src
374371 (Link txt (src,tit)) | "mailto:" `isPrefixOf` src ->
375372 do linkText <- inlineListToHtml opts txt
376− return $ obfuscateLink opts linkText src
373+ return $ obfuscateLink opts (show linkText) src
377374 (Link txt (src,tit)) ->
378375 do linkText <- inlineListToHtml opts txt
379376 return $ anchor ! ([href src] ++