Merge pull request dart-lang/markdown#105 from dart-lang/strong
Find and fix a gnarly oversight with using the wrong 'Element' class
diff --git a/pkgs/markdown/tool/common_mark_stats.dart b/pkgs/markdown/tool/common_mark_stats.dart
index 6d50731..2bcb4c3 100644
--- a/pkgs/markdown/tool/common_mark_stats.dart
+++ b/pkgs/markdown/tool/common_mark_stats.dart
@@ -7,8 +7,9 @@
import 'package:args/args.dart' show ArgParser;
import 'package:collection/collection.dart';
+import 'package:html/dom.dart' as dom;
import 'package:html/parser.dart' show parseFragment;
-import 'package:markdown/markdown.dart';
+import 'package:markdown/markdown.dart' show markdownToHtml;
import 'package:path/path.dart' as p;
const _commonMarkTests = 'common_mark_tests.json';
@@ -58,7 +59,7 @@
var actual = parseFragment(output);
nestedMap[e.example] = compareHtml(expected.children, actual.children);
if (verbose && !nestedMap[e.example]) {
- print('FAIL: http://spec.commonmark.org/0.24/#example-${e.example}');
+ print('FAIL: http://spec.commonmark.org/0.25/#example-${e.example}');
print('input:');
print(indent(e.markdown));
print('expected:');
@@ -125,7 +126,8 @@
}
/// Compare two DOM trees for equality.
-bool compareHtml(List<Element> expectedElements, List<Element> actualElements) {
+bool compareHtml(
+ List<dom.Element> expectedElements, List<dom.Element> actualElements) {
if (expectedElements.length != actualElements.length) {
return false;
}
@@ -138,34 +140,32 @@
return false;
}
- if (expected is Element) {
- if (expected.localName != actual.localName) {
+ if (expected.localName != actual.localName) {
+ return false;
+ }
+
+ if (expected.attributes.length != actual.attributes.length) {
+ return false;
+ }
+
+ var expectedAttrKeys = expected.attributes.keys.toList();
+ expectedAttrKeys.sort();
+
+ var actualAttrKeys = actual.attributes.keys.toList();
+ actualAttrKeys.sort();
+
+ for (var attrNum = 0; attrNum < actualAttrKeys.length; attrNum++) {
+ var expectedAttrKey = expectedAttrKeys[attrNum];
+ var actualAttrKey = actualAttrKeys[attrNum];
+
+ if (expectedAttrKey != actualAttrKey) {
return false;
}
- if (expected.attributes.length != actual.attributes.length) {
+ if (expected.attributes[expectedAttrKey] !=
+ actual.attributes[actualAttrKey]) {
return false;
}
-
- var expectedAttrKeys = expected.attributes.keys.toList();
- expectedAttrKeys.sort();
-
- var actualAttrKeys = actual.attributes.keys.toList();
- actualAttrKeys.sort();
-
- for (var attrNum = 0; attrNum < actualAttrKeys.length; attrNum++) {
- var expectedAttrKey = expectedAttrKeys[attrNum];
- var actualAttrKey = actualAttrKeys[attrNum];
-
- if (expectedAttrKey != actualAttrKey) {
- return false;
- }
-
- if (expected.attributes[expectedAttrKey] !=
- actual.attributes.keys[actualAttrKey]) {
- return false;
- }
- }
}
var childrenEqual = compareHtml(expected.children, actual.children);
diff --git a/pkgs/markdown/tool/common_mark_stats.json b/pkgs/markdown/tool/common_mark_stats.json
index b5cfaaf..7f783f3 100644
--- a/pkgs/markdown/tool/common_mark_stats.json
+++ b/pkgs/markdown/tool/common_mark_stats.json
@@ -3,14 +3,14 @@
"30": true,
"31": true,
"32": true,
- "33": true,
+ "33": false,
"34": true,
"35": true,
"36": true,
"37": false,
"38": true,
"39": true,
- "40": true,
+ "40": false,
"41": true,
"42": true,
"43": true,
@@ -18,7 +18,7 @@
"45": true,
"46": true,
"47": true,
- "48": true
+ "48": false
},
"Autolinks": {
"557": true,
@@ -30,7 +30,7 @@
"563": true,
"564": false,
"565": false,
- "566": true,
+ "566": false,
"567": false,
"568": false,
"569": true,
@@ -50,11 +50,11 @@
"290": true,
"291": true,
"292": true,
- "293": true,
+ "293": false,
"294": true,
- "295": true,
- "296": true,
- "297": true
+ "295": false,
+ "296": false,
+ "297": false
},
"Blank lines": {
"187": true
@@ -99,7 +99,7 @@
"319": true,
"320": true,
"321": true,
- "322": true,
+ "322": false,
"323": false,
"324": true
},
@@ -179,7 +179,7 @@
"397": false,
"398": false,
"399": true,
- "400": true,
+ "400": false,
"401": true,
"402": true,
"403": false,
@@ -194,8 +194,8 @@
"412": true,
"413": false,
"414": true,
- "415": true,
- "416": true,
+ "415": false,
+ "416": false,
"417": true,
"418": true,
"419": true,
@@ -224,8 +224,8 @@
"442": false,
"443": true,
"444": true,
- "445": true,
- "446": true,
+ "445": false,
+ "446": false,
"447": true,
"448": true,
"449": true,
@@ -242,8 +242,8 @@
"302": true,
"303": true,
"304": true,
- "305": true,
- "306": true,
+ "305": false,
+ "306": false,
"307": true,
"308": true,
"309": true
@@ -267,14 +267,14 @@
"102": true,
"103": true,
"104": true,
- "105": true,
+ "105": false,
"106": true,
"107": true,
"108": true,
"109": true,
"110": true,
"111": true,
- "112": true,
+ "112": false,
"113": false
},
"Hard line breaks": {
@@ -340,23 +340,23 @@
},
"Images": {
"535": true,
- "536": true,
- "537": true,
- "538": true,
- "539": true,
- "540": true,
+ "536": false,
+ "537": false,
+ "538": false,
+ "539": false,
+ "540": false,
"541": true,
"542": false,
"543": true,
- "544": true,
+ "544": false,
"545": true,
"546": true,
"547": true,
- "548": true,
+ "548": false,
"549": true,
"550": true,
"551": true,
- "552": true,
+ "552": false,
"553": true,
"554": true,
"555": true,
@@ -390,9 +390,9 @@
"163": true,
"164": false,
"165": true,
- "166": true,
+ "166": false,
"167": true,
- "168": true,
+ "168": false,
"169": true,
"170": true,
"171": true,
@@ -413,16 +413,16 @@
"459": true,
"460": true,
"461": false,
- "462": true,
- "463": true,
+ "462": false,
+ "463": false,
"464": false,
- "465": true,
- "466": true,
- "467": true,
+ "465": false,
+ "466": false,
+ "467": false,
"468": true,
- "469": true,
- "470": true,
- "471": true,
+ "469": false,
+ "470": false,
+ "471": false,
"472": false,
"473": false,
"474": true,
@@ -437,13 +437,13 @@
"483": true,
"484": false,
"485": false,
- "486": true,
- "487": true,
+ "486": false,
+ "487": false,
"488": true,
"489": true,
"490": true,
"491": true,
- "492": true,
+ "492": false,
"493": true,
"494": true,
"495": true,
@@ -455,13 +455,13 @@
"501": true,
"502": true,
"503": true,
- "504": true,
+ "504": false,
"505": true,
"506": true,
"507": false,
"508": true,
"509": true,
- "510": true,
+ "510": false,
"511": true,
"512": false,
"513": true,
@@ -481,7 +481,7 @@
"527": true,
"528": true,
"529": true,
- "530": true,
+ "530": false,
"531": true,
"532": true,
"533": true,
@@ -501,13 +501,13 @@
"223": true,
"224": false,
"225": false,
- "226": true,
+ "226": false,
"227": false,
- "228": true,
- "229": true,
+ "228": false,
+ "229": false,
"230": true,
"231": false,
- "232": true,
+ "232": false,
"233": true,
"234": false,
"235": false,
@@ -533,14 +533,14 @@
"255": false,
"256": false,
"257": true,
- "258": true,
+ "258": false,
"259": false
},
"Lists": {
"260": false,
"261": false,
"262": true,
- "263": true,
+ "263": false,
"264": false,
"265": true,
"266": false,
@@ -582,10 +582,10 @@
"579": true,
"580": true,
"581": true,
- "582": true,
+ "582": false,
"583": true,
"584": true,
- "585": true,
+ "585": false,
"586": true,
"587": false,
"588": true,
@@ -596,13 +596,13 @@
"593": true,
"594": true,
"595": true,
- "596": true
+ "596": false
},
"Setext headings": {
"49": true,
"50": false,
"51": true,
- "52": true,
+ "52": false,
"53": true,
"54": false,
"55": true,
diff --git a/pkgs/markdown/tool/common_mark_stats.txt b/pkgs/markdown/tool/common_mark_stats.txt
index 48523fc..7082c31 100644
--- a/pkgs/markdown/tool/common_mark_stats.txt
+++ b/pkgs/markdown/tool/common_mark_stats.txt
@@ -1,27 +1,27 @@
- 18 of 19 – 94.7% ATX headings
- 11 of 19 – 57.9% Autolinks
- 12 of 13 – 92.3% Backslash escapes
+ 15 of 19 – 78.9% ATX headings
+ 10 of 19 – 52.6% Autolinks
+ 8 of 13 – 61.5% Backslash escapes
1 of 1 – 100.0% Blank lines
18 of 25 – 72.0% Block quotes
- 14 of 15 – 93.3% Code spans
- 86 of 129 – 66.7% Emphasis and strong emphasis
- 12 of 12 – 100.0% Entity and numeric character references
- 26 of 27 – 96.3% Fenced code blocks
+ 13 of 15 – 86.7% Code spans
+ 81 of 129 – 62.8% Emphasis and strong emphasis
+ 10 of 12 – 83.3% Entity and numeric character references
+ 24 of 27 – 88.9% Fenced code blocks
15 of 15 – 100.0% Hard line breaks
42 of 42 – 100.0% HTML blocks
- 21 of 22 – 95.5% Images
+ 13 of 22 – 59.1% Images
10 of 12 – 83.3% Indented code blocks
1 of 1 – 100.0% Inlines
- 13 of 23 – 56.5% Link reference definitions
- 66 of 81 – 81.5% Links
- 25 of 47 – 53.2% List items
- 4 of 24 – 16.7% Lists
+ 11 of 23 – 47.8% Link reference definitions
+ 52 of 81 – 64.2% Links
+ 20 of 47 – 42.6% List items
+ 3 of 24 – 12.5% Lists
8 of 8 – 100.0% Paragraphs
1 of 1 – 100.0% Precedence
- 18 of 21 – 85.7% Raw HTML
- 16 of 26 – 61.5% Setext headings
+ 15 of 21 – 71.4% Raw HTML
+ 15 of 26 – 57.7% Setext headings
2 of 2 – 100.0% Soft line breaks
6 of 9 – 66.7% Tabs
3 of 3 – 100.0% Textual content
16 of 19 – 84.2% Thematic breaks
- 465 of 616 – 75.5% TOTAL
+ 413 of 616 – 67.0% TOTAL
diff --git a/pkgs/markdown/tool/dartdoc-compare.dart b/pkgs/markdown/tool/dartdoc-compare.dart
index 24c23ae..5b9cff7 100644
--- a/pkgs/markdown/tool/dartdoc-compare.dart
+++ b/pkgs/markdown/tool/dartdoc-compare.dart
@@ -68,7 +68,7 @@
return result == 0;
}
- run_dartdoc(markdown_ref, package) {
+ String run_dartdoc(markdown_ref, package) {
print("==========================================================");
print("Running dartdoc for ${markdown_ref}...");
print("==========================================================");
@@ -77,7 +77,8 @@
if (!sdk) system('pub', ['get']);
var out = Directory.systemTemp
.createTempSync("dartdoc-compare-${markdown_ref}__");
- var sdk_options = sdk ? ["--sdk-docs", "--dart-sdk=$package"] : [];
+ var sdk_options =
+ sdk ? ["--sdk-docs", "--dart-sdk=$package"] : <String>[];
var cmd = "dart";
var args = ["${dartdoc_bin}", "--output=${out.path}"]
..addAll(sdk_options);
@@ -107,7 +108,7 @@
return system('pub', ['get']);
}
- static system(cmd, args) {
+ static system(String cmd, List<String> args) {
var result = Process.runSync(cmd, args);
print(result.stdout);
print(result.stderr);