Merge pull request dart-lang/markdown#66 from srawlins/fix-65
Fix newlines between link dest and title
diff --git a/pkgs/markdown/CHANGELOG.md b/pkgs/markdown/CHANGELOG.md
index 65b05b5..5d6b84a 100644
--- a/pkgs/markdown/CHANGELOG.md
+++ b/pkgs/markdown/CHANGELOG.md
@@ -8,6 +8,7 @@
* Inline HTML syntax support; This is also considered an extension (#18).
* The text `[foo] (bar)` no longer renders as an inline link (#53).
* The text `[foo]()` now renders as an inline link.
+* Whitespace now allowed between a link's destination and title (#65).
* Header identifier support in the HeaderWithIdSyntax and
SetextHeaderWithIdSyntax extensions.
* Implement backslash-escaping so that Markdown syntax can be escaped, such as
diff --git a/pkgs/markdown/lib/src/inline_parser.dart b/pkgs/markdown/lib/src/inline_parser.dart
index 2e8f42f..77a947c 100644
--- a/pkgs/markdown/lib/src/inline_parser.dart
+++ b/pkgs/markdown/lib/src/inline_parser.dart
@@ -276,9 +276,9 @@
/// inline-style links as well as optional titles for inline links. To make that
/// a bit more palatable, this breaks it into pieces.
static get linkPattern {
- var refLink = r'\[([^\]]*)\]'; // "[id]" reflink id.
- var title = r'(?:[ ]*"([^"]+)"|)'; // Optional title in quotes.
- var inlineLink = '\\(([^ )]*)$title\\)'; // "(url "title")" link.
+ var refLink = r'\[([^\]]*)\]'; // `[id]` reflink id.
+ var title = r'(?:\s*"([^"]+)"|)'; // Optional title in quotes.
+ var inlineLink = '\\((\\S*)$title\\)'; // `(url "title")` link.
return '\](?:($refLink|$inlineLink)|)';
// The groups matched by this are:
diff --git a/pkgs/markdown/test/original/inline_links.unit b/pkgs/markdown/test/original/inline_links.unit
index 5ab3549..d6e6d77 100644
--- a/pkgs/markdown/test/original/inline_links.unit
+++ b/pkgs/markdown/test/original/inline_links.unit
@@ -23,6 +23,19 @@
<<<
<p>links <a href="http://example.com">are</a> awesome</p>
+>>> multi-line link
+links [are
+awesome](<http://example.com>).
+
+<<<
+<p>links <a href="http://example.com">are
+awesome</a>.</p>
+>>> multi-line link with a title
+links [are](http://foo.com
+"woo") awesome
+
+<<<
+<p>links <a href="http://foo.com" title="woo">are</a> awesome</p>
>>> not a real link
links [are] (http://foo.com) awesome