Merge pull request dart-lang/markdown#25 from caffinatedmonkey/readme
Rewrote README.md
diff --git a/pkgs/markdown/lib/src/document.dart b/pkgs/markdown/lib/src/document.dart
index 7ed01ca..4724208 100644
--- a/pkgs/markdown/lib/src/document.dart
+++ b/pkgs/markdown/lib/src/document.dart
@@ -9,8 +9,9 @@
final Map<String, Link> refLinks;
List<InlineSyntax> inlineSyntaxes;
Resolver linkResolver;
+ Resolver imageLinkResolver;
- Document({this.inlineSyntaxes, this.linkResolver})
+ Document({this.inlineSyntaxes, this.linkResolver, this.imageLinkResolver})
: refLinks = <String, Link>{};
parseRefLinks(List<String> lines) {
diff --git a/pkgs/markdown/lib/src/html_renderer.dart b/pkgs/markdown/lib/src/html_renderer.dart
index 97b900b..7dd1f9b 100644
--- a/pkgs/markdown/lib/src/html_renderer.dart
+++ b/pkgs/markdown/lib/src/html_renderer.dart
@@ -6,12 +6,13 @@
import 'ast.dart';
import 'document.dart';
+import 'inline_parser.dart';
/// Converts the given string of markdown to HTML.
-String markdownToHtml(String markdown, {inlineSyntaxes, linkResolver,
- bool inlineOnly: false}) {
+String markdownToHtml(String markdown, {List<InlineSyntax> inlineSyntaxes,
+ Resolver linkResolver, Resolver imageLinkResolver, bool inlineOnly: false}) {
var document = new Document(inlineSyntaxes: inlineSyntaxes,
- linkResolver: linkResolver);
+ imageLinkResolver: imageLinkResolver, linkResolver: linkResolver);
if (inlineOnly) {
return renderToHtml(document.parseInline(markdown));
diff --git a/pkgs/markdown/lib/src/inline_parser.dart b/pkgs/markdown/lib/src/inline_parser.dart
index 8bab6ba..e852384 100644
--- a/pkgs/markdown/lib/src/inline_parser.dart
+++ b/pkgs/markdown/lib/src/inline_parser.dart
@@ -84,7 +84,7 @@
// Custom link resolvers goes after the generic text syntax.
syntaxes.insertAll(1, [
new LinkSyntax(linkResolver: document.linkResolver),
- new ImageLinkSyntax(linkResolver: document.linkResolver)
+ new ImageLinkSyntax(linkResolver: document.imageLinkResolver)
]);
}
@@ -251,6 +251,9 @@
class LinkSyntax extends TagSyntax {
final Resolver linkResolver;
+ /// Weather or not this link was resolved by a [Resolver]
+ bool resolved = false;
+
/// The regex for the end of a link needs to handle both reference style and
/// inline styles as well as optional titles for inline links. To make that
/// a bit more palatable, this breaks it into pieces.
@@ -289,6 +292,7 @@
(oldVal, child) => oldVal + child.text);
// See if we have a resolver that will generate a link for us.
+ resolved = true;
return linkResolver(textToResolve);
} else {
Link link = getLink(parser, match, state);
@@ -345,8 +349,9 @@
ImageLinkSyntax({this.linkResolver})
: super(pattern: r'!\[');
- Element createNode(InlineParser parser, Match match, TagState state) {
- Element node = super.createNode(parser, match, state);
+ Node createNode(InlineParser parser, Match match, TagState state) {
+ Node node = super.createNode(parser, match, state);
+ if (resolved) return node;
if (node == null) return null;
final Element imageElement = new Element.withTag("img")
diff --git a/pkgs/markdown/pubspec.yaml b/pkgs/markdown/pubspec.yaml
index e07d943..3426132 100644
--- a/pkgs/markdown/pubspec.yaml
+++ b/pkgs/markdown/pubspec.yaml
@@ -1,5 +1,5 @@
name: markdown
-version: 0.7.0
+version: 0.7.1
author: Dart Team <misc@dartlang.org>
description: A library for converting markdown to HTML.
homepage: https://github.com/dpeek/dart-markdown
@@ -7,3 +7,4 @@
sdk: '>=1.0.0 <2.0.0'
dev_dependencies:
unittest: '>=0.9.0 <0.11.0'
+
diff --git a/pkgs/markdown/test/markdown_test.dart b/pkgs/markdown/test/markdown_test.dart
index e1cc81f..bb1a7cc 100644
--- a/pkgs/markdown/test/markdown_test.dart
+++ b/pkgs/markdown/test/markdown_test.dart
@@ -952,11 +952,16 @@
group('Resolver', () {
var nyanResolver = (text) => new Text('~=[,,_${text}_,,]:3');
- validate('simple resolver', '''
+ validate('simple link resolver', '''
resolve [this] thing
''', '''
<p>resolve ~=[,,_this_,,]:3 thing</p>
''', linkResolver: nyanResolver);
+ validate('simple image resolver', '''
+ resolve ![this] thing
+ ''', '''
+ <p>resolve ~=[,,_this_,,]:3 thing</p>
+ ''', imageLinkResolver: nyanResolver);
});
group('Custom inline syntax', () {
@@ -1048,14 +1053,15 @@
}
void validate(String description, String markdown, String html,
- {bool verbose: false, inlineSyntaxes, linkResolver,
- bool inlineOnly: false}) {
+ {bool verbose: false, List<InlineSyntax> inlineSyntaxes,
+ Resolver linkResolver, Resolver imageLinkResolver, bool inlineOnly: false}) {
test(description, () {
markdown = cleanUpLiteral(markdown);
html = cleanUpLiteral(html);
var result = markdownToHtml(markdown, inlineSyntaxes: inlineSyntaxes,
- linkResolver: linkResolver, inlineOnly: inlineOnly);
+ linkResolver: linkResolver, imageLinkResolver: imageLinkResolver,
+ inlineOnly: inlineOnly);
var passed = compareOutput(html, result);
if (!passed) {