Render element attributes in the order they were defined `attributes` uses a LinkedHashMap, so the ordering is stable with the input
diff --git a/pkgs/markdown/CHANGELOG.md b/pkgs/markdown/CHANGELOG.md index 7a6fe79..d4ace80 100644 --- a/pkgs/markdown/CHANGELOG.md +++ b/pkgs/markdown/CHANGELOG.md
@@ -1,5 +1,7 @@ ## 2.0.3 +* Render element attributes in the order they were defined. + Aligns more closely with the strict spec definition. * Added 68 new GitHub emojis. ## 2.0.2
diff --git a/pkgs/markdown/lib/src/html_renderer.dart b/pkgs/markdown/lib/src/html_renderer.dart index 95e0cda..d77c6f2 100644 --- a/pkgs/markdown/lib/src/html_renderer.dart +++ b/pkgs/markdown/lib/src/html_renderer.dart
@@ -66,12 +66,8 @@ buffer.write('<${element.tag}'); - // Sort the keys so that we generate stable output. - var attributeNames = element.attributes.keys.toList(); - attributeNames.sort((a, b) => a.compareTo(b)); - - for (var name in attributeNames) { - buffer.write(' $name="${element.attributes[name]}"'); + for (var entry in element.attributes.entries) { + buffer.write(' ${entry.key}="${entry.value}"'); } // attach header anchor ids generated from text
diff --git a/pkgs/markdown/test/original/inline_images.unit b/pkgs/markdown/test/original/inline_images.unit index 9ce0674..5e38830 100644 --- a/pkgs/markdown/test/original/inline_images.unit +++ b/pkgs/markdown/test/original/inline_images.unit
@@ -2,19 +2,19 @@  <<< -<p><img alt="" src="http://foo.com/foo.png" /></p> +<p><img src="http://foo.com/foo.png" alt="" /></p> >>> alternate text  <<< -<p><img alt="alternate text" src="http://foo.com/foo.png" /></p> +<p><img src="http://foo.com/foo.png" alt="alternate text" /></p> >>> title  <<< -<p><img alt="" src="http://foo.com/foo.png" title="optional title" /></p> +<p><img src="http://foo.com/foo.png" alt="" title="optional title" /></p> >>> invalid alt text  <<< -<p><img alt="alt" src="http://foo.com/foo.png" /></p> +<p><img src="http://foo.com/foo.png" alt="alt" /></p>
diff --git a/pkgs/markdown/test/original/inline_links.unit b/pkgs/markdown/test/original/inline_links.unit index 74afe5a..4bfd85a 100644 --- a/pkgs/markdown/test/original/inline_links.unit +++ b/pkgs/markdown/test/original/inline_links.unit
@@ -17,17 +17,17 @@ links [](http://foo.com) awesome <<< -<p>links <a href="http://foo.com"><img alt="" src="/are.png" /></a> awesome</p> +<p>links <a href="http://foo.com"><img src="/are.png" alt="" /></a> awesome</p> >>> image with alt inside link links [](http://foo.com) awesome <<< -<p>links <a href="http://foo.com"><img alt="my alt" src="/are.png" /></a> awesome</p> +<p>links <a href="http://foo.com"><img src="/are.png" alt="my alt" /></a> awesome</p> >>> image with title inside link links [](http://foo.com) awesome <<< -<p>links <a href="http://foo.com"><img alt="" src="/are.png" title="my title" /></a> awesome</p> +<p>links <a href="http://foo.com"><img src="/are.png" alt="" title="my title" /></a> awesome</p> >>> no URL links [are]() awesome
diff --git a/pkgs/markdown/test/original/reference_images.unit b/pkgs/markdown/test/original/reference_images.unit index 2444a11..b098d24 100644 --- a/pkgs/markdown/test/original/reference_images.unit +++ b/pkgs/markdown/test/original/reference_images.unit
@@ -4,31 +4,31 @@ [foo]: http://foo.com/foo.png <<< -<p><img alt="" src="http://foo.com/foo.png" /></p> +<p><img src="http://foo.com/foo.png" alt="" /></p> >>> alternate text ![alternate text][foo] [foo]: http://foo.com/foo.png <<< -<p><img alt="alternate text" src="http://foo.com/foo.png" /></p> +<p><img src="http://foo.com/foo.png" alt="alternate text" /></p> >>> title ![][foo] [foo]: http://foo.com/foo.png "optional title" <<< -<p><img alt="" src="http://foo.com/foo.png" title="optional title" /></p> +<p><img src="http://foo.com/foo.png" alt="" title="optional title" /></p> >>> invalid alt text ![`alt`][foo] [foo]: http://foo.com/foo.png "optional title" <<< -<p><img alt="alt" src="http://foo.com/foo.png" title="optional title" /></p> +<p><img src="http://foo.com/foo.png" alt="alt" title="optional title" /></p> >>> shortcut reference image ![foo] [foo]: http://foo.com/foo.png <<< -<p><img alt="foo" src="http://foo.com/foo.png" /></p> +<p><img src="http://foo.com/foo.png" alt="foo" /></p>
diff --git a/pkgs/markdown/test/original/reference_links.unit b/pkgs/markdown/test/original/reference_links.unit index 6b22081..6c217a5 100644 --- a/pkgs/markdown/test/original/reference_links.unit +++ b/pkgs/markdown/test/original/reference_links.unit
@@ -88,4 +88,4 @@ [coverage_page]:https://coveralls.io/github/yeradis/stay_points.dart?branch=master [coverage_status]: https://coveralls.io/repos/github/yeradis/stay_points.dart/badge.svg?branch=master <<< -<p><a href="https://coveralls.io/github/yeradis/stay_points.dart?branch=master"><img alt="Coverage Status" src="https://coveralls.io/repos/github/yeradis/stay_points.dart/badge.svg?branch=master" /></a></p> \ No newline at end of file +<p><a href="https://coveralls.io/github/yeradis/stay_points.dart?branch=master"><img src="https://coveralls.io/repos/github/yeradis/stay_points.dart/badge.svg?branch=master" alt="Coverage Status" /></a></p> \ No newline at end of file
diff --git a/pkgs/markdown/tool/common_mark_stats.json b/pkgs/markdown/tool/common_mark_stats.json index 505167a..5949d7b 100644 --- a/pkgs/markdown/tool/common_mark_stats.json +++ b/pkgs/markdown/tool/common_mark_stats.json
@@ -341,26 +341,26 @@ "158": "loose" }, "Images": { - "543": "loose", + "543": "strict", "544": "loose", "545": "fail", - "546": "loose", + "546": "strict", "547": "loose", "548": "loose", - "549": "loose", - "550": "loose", - "551": "loose", - "552": "loose", - "553": "loose", - "554": "loose", - "555": "loose", - "556": "loose", - "557": "loose", + "549": "strict", + "550": "strict", + "551": "strict", + "552": "strict", + "553": "strict", + "554": "strict", + "555": "strict", + "556": "strict", + "557": "strict", "558": "loose", - "559": "loose", - "560": "loose", + "559": "strict", + "560": "strict", "561": "loose", - "562": "loose", + "562": "strict", "563": "strict", "564": "strict" }, @@ -436,10 +436,10 @@ "485": "strict", "486": "strict", "487": "strict", - "488": "loose", + "488": "strict", "489": "strict", "490": "strict", - "491": "loose", + "491": "strict", "492": "fail", "493": "strict", "494": "strict", @@ -450,7 +450,7 @@ "499": "strict", "500": "strict", "501": "strict", - "502": "loose", + "502": "strict", "503": "strict", "504": "strict", "505": "fail",
diff --git a/pkgs/markdown/tool/gfm_stats.json b/pkgs/markdown/tool/gfm_stats.json index 7151ef7..aae6a73 100644 --- a/pkgs/markdown/tool/gfm_stats.json +++ b/pkgs/markdown/tool/gfm_stats.json
@@ -362,26 +362,26 @@ "158": "loose" }, "Images": { - "563": "loose", + "563": "strict", "564": "loose", "565": "fail", - "566": "loose", + "566": "strict", "567": "loose", "568": "loose", - "569": "loose", - "570": "loose", - "571": "loose", - "572": "loose", - "573": "loose", - "574": "loose", - "575": "loose", - "576": "loose", - "577": "loose", + "569": "strict", + "570": "strict", + "571": "strict", + "572": "strict", + "573": "strict", + "574": "strict", + "575": "strict", + "576": "strict", + "577": "strict", "578": "loose", - "579": "loose", - "580": "loose", + "579": "strict", + "580": "strict", "581": "loose", - "582": "loose", + "582": "strict", "583": "strict", "584": "strict" }, @@ -458,10 +458,10 @@ "505": "strict", "506": "strict", "507": "strict", - "508": "loose", + "508": "strict", "509": "strict", "510": "strict", - "511": "loose", + "511": "strict", "512": "fail", "513": "strict", "514": "strict", @@ -472,7 +472,7 @@ "519": "strict", "520": "strict", "521": "strict", - "522": "loose", + "522": "strict", "523": "strict", "524": "strict", "525": "fail",