@@ -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 & 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] ++