From ca6cb23f23724d01b5f7d6ee7a3c9527ca8807e6 Mon Sep 17 00:00:00 2001 From: fiddlosopher Date: Wed, 24 Jan 2007 19:06:30 +0000 Subject: Modified Markdown writer to use autolinks when possible. So, instead of [site.com](site.com) we get . Changed test suite accordingly. git-svn-id: https://pandoc.googlecode.com/svn/trunk@508 788f1e2b-df1e-0410-8736-df70ead52e1b --- src/Text/Pandoc/Writers/Markdown.hs | 16 ++++++++++------ tests/writer.markdown | 9 ++++----- 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: - In a list? -- [http://example.com/](http://example.com/) +- - It should. -An e-mail address: [nobody@nowhere.net](mailto:nobody@nowhere.net) +An e-mail address: -> Blockquoted: [http://example.com/](http://example.com/) +> Blockquoted: Auto-links should not occur here: `` -- cgit v1.2.3