diff options
author | John MacFarlane <jgm@berkeley.edu> | 2014-08-12 15:49:43 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2014-08-12 15:49:43 -0700 |
commit | 81157c7cc6ab72fc70bfba18f90c3f12142b7e4e (patch) | |
tree | 65d748936f953e00d588752f96ce49a181e3e386 | |
parent | da507dcb84eb16629fdb1b65439557772c7214f8 (diff) | |
download | pandoc-81157c7cc6ab72fc70bfba18f90c3f12142b7e4e.tar.gz |
HTML writer: use 'uri' or 'email' class for autolinks.
This allows them to be styled specially.
Closes #1501.
-rw-r--r-- | src/Text/Pandoc/Writers/HTML.hs | 13 | ||||
-rw-r--r-- | tests/writer.html | 10 |
2 files changed, 13 insertions, 10 deletions
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs index 36ce2ba21..9ead604d7 100644 --- a/src/Text/Pandoc/Writers/HTML.hs +++ b/src/Text/Pandoc/Writers/HTML.hs @@ -40,7 +40,7 @@ import Text.Pandoc.Slides import Text.Pandoc.Highlighting ( highlight, styleToCss, formatHtmlInline, formatHtmlBlock ) import Text.Pandoc.XML (fromEntities, escapeStringForXML) -import Network.URI ( parseURIReference, URI(..) ) +import Network.URI ( parseURIReference, URI(..), unEscapeString ) import Network.HTTP ( urlEncode ) import Numeric ( showHex ) import Data.Char ( ord, toLower ) @@ -361,13 +361,13 @@ obfuscateLink opts txt s = ReferenceObfuscation -> -- need to use preEscapedString or &'s are escaped to & in URL preEscapedString $ "<a href=\"" ++ (obfuscateString s') - ++ "\">" ++ (obfuscateString txt) ++ "</a>" + ++ "\" class=\"email\">" ++ (obfuscateString txt) ++ "</a>" JavascriptObfuscation -> (H.script ! A.type_ "text/javascript" $ preEscapedString ("\n<!--\nh='" ++ obfuscateString domain ++ "';a='" ++ at' ++ "';n='" ++ obfuscateString name' ++ "';e=n+a+h;\n" ++ - "document.write('<a h'+'ref'+'=\"ma'+'ilto'+':'+e+'\">'+" ++ + "document.write('<a h'+'ref'+'=\"ma'+'ilto'+':'+e+'\" clas'+'s=\"em' + 'ail\">'+" ++ linkText ++ "+'<\\/'+'a'+'>');\n// -->\n")) >> H.noscript (preEscapedString $ obfuscateString altText) _ -> error $ "Unknown obfuscation method: " ++ show meth @@ -739,9 +739,12 @@ inlineToHtml opts inline = RevealJsSlides -> '#':'/':xs _ -> s let link = H.a ! A.href (toValue s') $ linkText + let link' = if txt == [Str (unEscapeString s)] + then link ! A.class_ "uri" + else link return $ if null tit - then link - else link ! A.title (toValue tit) + then link' + else link' ! A.title (toValue tit) (Image txt (s,tit)) | treatAsImage s -> do let alternate' = stringify txt let attributes = [A.src $ toValue s] ++ diff --git a/tests/writer.html b/tests/writer.html index bbe835720..8b0877f33 100644 --- a/tests/writer.html +++ b/tests/writer.html @@ -480,7 +480,7 @@ Blah <p><script type="text/javascript"> <!-- h='nowhere.net';a='@';n='nobody';e=n+a+h; -document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'">'+'Email link'+'<\/'+'a'+'>'); +document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'" clas'+'s="em' + 'ail">'+'Email link'+'<\/'+'a'+'>'); // --> </script><noscript>Email link (nobody at nowhere dot net)</noscript></p> <p><a href="">Empty</a>.</p> @@ -503,20 +503,20 @@ document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'">'+'Email link'+'<\/'+'a'+'>') <p>Here’s an <a href="/script?foo=1&bar=2">inline link</a>.</p> <p>Here’s an <a href="/script?foo=1&bar=2">inline link in pointy braces</a>.</p> <h2 id="autolinks">Autolinks</h2> -<p>With an ampersand: <a href="http://example.com/?foo=1&bar=2">http://example.com/?foo=1&bar=2</a></p> +<p>With an ampersand: <a href="http://example.com/?foo=1&bar=2" class="uri">http://example.com/?foo=1&bar=2</a></p> <ul> <li>In a list?</li> -<li><a href="http://example.com/">http://example.com/</a></li> +<li><a href="http://example.com/" class="uri">http://example.com/</a></li> <li>It should.</li> </ul> <p>An e-mail address: <script type="text/javascript"> <!-- h='nowhere.net';a='@';n='nobody';e=n+a+h; -document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'">'+e+'<\/'+'a'+'>'); +document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'" clas'+'s="em' + 'ail">'+e+'<\/'+'a'+'>'); // --> </script><noscript>nobody at nowhere dot net</noscript></p> <blockquote> -<p>Blockquoted: <a href="http://example.com/">http://example.com/</a></p> +<p>Blockquoted: <a href="http://example.com/" class="uri">http://example.com/</a></p> </blockquote> <p>Auto-links should not occur here: <code><http://example.com/></code></p> <pre><code>or here: <http://example.com/></code></pre> |