Allow dart's custom [foo] link syntax contain multiple text elements.
(Allows [foo<bar>] to be a link)
diff --git a/pkgs/markdown/lib/src/markdown/inline_parser.dart b/pkgs/markdown/lib/src/markdown/inline_parser.dart
index d3ec7ae..d141659 100644
--- a/pkgs/markdown/lib/src/markdown/inline_parser.dart
+++ b/pkgs/markdown/lib/src/markdown/inline_parser.dart
@@ -280,13 +280,13 @@
 
       // Only allow implicit links if the content is just text.
       // TODO(rnystrom): Do we want to relax this?
-      if (state.children.length != 1) return false;
-      if (state.children[0] is! Text) return false;
-
-      Text link = state.children[0];
-
+      if (state.children.any((child) => child is! Text)) return false;
+      // If there are multiple children, but they are all text, send the
+      // combined text to linkResolver.
+      var textToResolve = state.children.fold('',
+          (oldVal, child) => oldVal + child.text);
       // See if we have a resolver that will generate a link for us.
-      final node = linkResolver(link.text);
+      final node = linkResolver(textToResolve);
       if (node == null) return false;
 
       parser.addNode(node);
diff --git a/pkgs/markdown/test/markdown_test.dart b/pkgs/markdown/test/markdown_test.dart
index 1e4b0c9..91019fe 100644
--- a/pkgs/markdown/test/markdown_test.dart
+++ b/pkgs/markdown/test/markdown_test.dart
@@ -882,11 +882,16 @@
         <p>~=[,,_,,]:3</p>
         ''', inlineSyntaxes: nyanSyntax);
 
+    validate('dart custom links', 'links [are<foo>] awesome',
+      '<p>links <a>are&lt;foo></a> awesome</p>',
+      linkResolver: (text) => new Element.text('a', text.replaceAll('<',
+      '&lt;')));
+
     // TODO(amouravski): need more tests here for custom syntaxes, as some
     // things are not quite working properly. The regexps are sometime a little
     // too greedy, I think.
   });
-  
+
   group('Inline only', () {
     validate('simple line', '''
         This would normally create a paragraph.
@@ -957,7 +962,7 @@
 }
 
 validate(String description, String markdown, String html,
-         {bool verbose: false, inlineSyntaxes, linkResolver, 
+         {bool verbose: false, inlineSyntaxes, linkResolver,
           bool inlineOnly: false}) {
   test(description, () {
     markdown = cleanUpLiteral(markdown);