Prevent duplicate syntaxes from being added to a document
diff --git a/pkgs/markdown/lib/src/document.dart b/pkgs/markdown/lib/src/document.dart index e8b470b..fc5fa82 100644 --- a/pkgs/markdown/lib/src/document.dart +++ b/pkgs/markdown/lib/src/document.dart
@@ -8,23 +8,25 @@ /// Maintains the context needed to parse a Markdown document. class Document { final Map<String, Link> refLinks = {}; - List<BlockSyntax> blockSyntaxes; - List<InlineSyntax> inlineSyntaxes; + Iterable<BlockSyntax> blockSyntaxes; + Iterable<InlineSyntax> inlineSyntaxes; ExtensionSet extensionSet; Resolver linkResolver; Resolver imageLinkResolver; Document( - {this.blockSyntaxes, - this.inlineSyntaxes, - extensionSet, + {Iterable<BlockSyntax> blockSyntaxes, + Iterable<InlineSyntax> inlineSyntaxes, + ExtensionSet extensionSet, this.linkResolver, this.imageLinkResolver}) { - blockSyntaxes ??= []; - inlineSyntaxes ??= []; extensionSet ??= ExtensionSet.commonMark; - blockSyntaxes.addAll(extensionSet.blockSyntaxes); - inlineSyntaxes.addAll(extensionSet.inlineSyntaxes); + this.blockSyntaxes = new Set() + ..addAll(blockSyntaxes ?? []) + ..addAll(extensionSet.blockSyntaxes); + this.inlineSyntaxes = new Set() + ..addAll(inlineSyntaxes ?? []) + ..addAll(extensionSet.inlineSyntaxes); } parseRefLinks(List<String> lines) {
diff --git a/pkgs/markdown/lib/src/html_renderer.dart b/pkgs/markdown/lib/src/html_renderer.dart index d1f7147..bd5b12d 100644 --- a/pkgs/markdown/lib/src/html_renderer.dart +++ b/pkgs/markdown/lib/src/html_renderer.dart
@@ -11,8 +11,8 @@ /// Converts the given string of markdown to HTML. String markdownToHtml(String markdown, - {List<BlockSyntax> blockSyntaxes, - List<InlineSyntax> inlineSyntaxes, + {Iterable<BlockSyntax> blockSyntaxes, + Iterable<InlineSyntax> inlineSyntaxes, ExtensionSet extensionSet, Resolver linkResolver, Resolver imageLinkResolver,
diff --git a/pkgs/markdown/test/util.dart b/pkgs/markdown/test/util.dart index e9bd5a8..dfec203 100644 --- a/pkgs/markdown/test/util.dart +++ b/pkgs/markdown/test/util.dart
@@ -26,25 +26,18 @@ // Locate the "test" directory. Use mirrors so that this works with the test // package, which loads this suite into an isolate. -String get _testDir => p.dirname(currentMirrorSystem() - .findLibrary(#markdown.test.util) - .uri - .path); +String get _testDir => + p.dirname(currentMirrorSystem().findLibrary(#markdown.test.util).uri.path); void testFile(String file, - {List<BlockSyntax> blockSyntaxes, - List<InlineSyntax> inlineSyntaxes}) => - testUnitFile( - file, - new File(p.join(_testDir, file)), - blockSyntaxes: blockSyntaxes, - inlineSyntaxes: inlineSyntaxes); + {Iterable<BlockSyntax> blockSyntaxes, + Iterable<InlineSyntax> inlineSyntaxes}) => + testUnitFile(file, new File(p.join(_testDir, file)), + blockSyntaxes: blockSyntaxes, inlineSyntaxes: inlineSyntaxes); -void testUnitFile( - String directory, - File entry, - {List<BlockSyntax> blockSyntaxes, - List<InlineSyntax> inlineSyntaxes}) { +void testUnitFile(String directory, File entry, + {Iterable<BlockSyntax> blockSyntaxes, + Iterable<InlineSyntax> inlineSyntaxes}) { group('$directory ${p.basename(entry.path)}', () { var lines = entry.readAsLinesSync(); @@ -76,23 +69,15 @@ expectedOutput += lines[i] + "\n"; } - validateCore( - description, - input, - expectedOutput, - blockSyntaxes: blockSyntaxes, - inlineSyntaxes: inlineSyntaxes - ); + validateCore(description, input, expectedOutput, + blockSyntaxes: blockSyntaxes, inlineSyntaxes: inlineSyntaxes); } }); } -void validateCore( - String description, - String markdown, - String html, - {List<BlockSyntax> blockSyntaxes, - List<InlineSyntax> inlineSyntaxes, +void validateCore(String description, String markdown, String html, + {Iterable<BlockSyntax> blockSyntaxes, + Iterable<InlineSyntax> inlineSyntaxes, Resolver linkResolver, Resolver imageLinkResolver, bool inlineOnly: false}) {