aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b>2007-01-24 19:06:30 +0000
committerfiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b>2007-01-24 19:06:30 +0000
commitca6cb23f23724d01b5f7d6ee7a3c9527ca8807e6 (patch)
treeb010e6c7117c1d876d2999499c1f16bb13a255b9
parent0646eef97691794eeac5549db18ac82cb6b84576 (diff)
downloadpandoc-ca6cb23f23724d01b5f7d6ee7a3c9527ca8807e6.tar.gz
Modified Markdown writer to use autolinks when possible.
So, instead of [site.com](site.com) we get <site.com>. Changed test suite accordingly. git-svn-id: https://pandoc.googlecode.com/svn/trunk@508 788f1e2b-df1e-0410-8736-df70ead52e1b
-rw-r--r--src/Text/Pandoc/Writers/Markdown.hs16
-rw-r--r--tests/writer.markdown9
2 files changed, 14 insertions, 11 deletions
diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs
index 297f2dc36..5eff079f8 100644
--- a/src/Text/Pandoc/Writers/Markdown.hs
+++ b/src/Text/Pandoc/Writers/Markdown.hs
@@ -35,7 +35,7 @@ module Text.Pandoc.Writers.Markdown (
import Text.Regex ( matchRegex, mkRegex )
import Text.Pandoc.Definition
import Text.Pandoc.Shared
-import Data.List ( group )
+import Data.List ( group, isPrefixOf, drop )
import Text.PrettyPrint.HughesPJ hiding ( Str )
-- | Convert Pandoc to Markdown.
@@ -183,11 +183,15 @@ inlineToMarkdown Space = char ' '
inlineToMarkdown (Link txt (Src src tit)) =
let linktext = if (null txt) || (txt == [Str ""])
then text "link"
- else inlineListToMarkdown txt in
- char '[' <> linktext <> char ']' <> char '(' <> text src <>
- (if tit /= ""
- then text (" \"" ++ (escapeLinkTitle tit) ++ "\"")
- else empty) <> char ')'
+ else inlineListToMarkdown txt
+ linktitle = if null tit
+ then empty
+ else text (" \"" ++ (escapeLinkTitle tit) ++ "\"")
+ srcSuffix = if isPrefixOf "mailto:" src then drop 7 src else src in
+ if (null tit) && (txt == [Str srcSuffix])
+ then char '<' <> text srcSuffix <> char '>'
+ else char '[' <> linktext <> char ']' <> char '(' <> text src <>
+ linktitle <> char ')'
inlineToMarkdown (Link txt (Ref ref)) =
let first = char '[' <> inlineListToMarkdown txt <> char ']'
second = if (txt == ref)
diff --git a/tests/writer.markdown b/tests/writer.markdown
index 42bab4664..dbbed7adb 100644
--- a/tests/writer.markdown
+++ b/tests/writer.markdown
@@ -575,16 +575,15 @@ Here's an [inline link in pointy braces](/script?foo=1&bar=2).
## Autolinks
-With an ampersand:
-[http://example.com/?foo=1&bar=2](http://example.com/?foo=1&bar=2)
+With an ampersand: <http://example.com/?foo=1&bar=2>
- In a list?
-- [http://example.com/](http://example.com/)
+- <http://example.com/>
- It should.
-An e-mail address: [nobody@nowhere.net](mailto:nobody@nowhere.net)
+An e-mail address: <nobody@nowhere.net>
-> Blockquoted: [http://example.com/](http://example.com/)
+> Blockquoted: <http://example.com/>
Auto-links should not occur here: `<http://example.com/>`