)]}'
{
  "commit": "7ae8a67cf3e150d2ed2e47762e75b7e26810b872",
  "tree": "6da27aef23a092681ee2f30a1b32d8d6f3fb792c",
  "parents": [
    "89fe2136cfc4cd70af11242d8fdac37a0deeeb6e"
  ],
  "author": {
    "name": "Sam Rawlins",
    "email": "srawlins@google.com",
    "time": "Thu Dec 10 14:06:35 2020 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Dec 10 14:06:35 2020 -0800"
  },
  "message": "Overhaul link and emphasis resolution (dart-lang/markdown#345)\n\n* Overhaul link and emphasis resolution\r\n\r\nResolution of complex link and emphasis text follows very specific rules which\r\nwere incompatible with the currenty TagState stack. The new algorithms follow\r\nthe process outlined in the [CommonMark\r\nspec](https://spec.commonmark.org/0.29/#an-algorithm-for-parsing-nested-emphasis-and-links).\r\n\r\nThe crux of the issue which required such an overhaul is that the current\r\nTagState stack did not include any ability to wait to parse a tag\u0027s inner text\r\nuntil it was known that a tag could be closed at the current position, then\r\nparse that inner text, then close the tag. This unfortunately requires a\r\nbreaking change for downstream packages which subclass TagSyntax.\r\n\r\n* BREAKING: TagSyntax constructor no longer takes an `end` parameter. TagSyntax\r\n  no longer implements `onMatchEnd`. Instead, TagSyntax implements a method\r\n  called \u0027close\u0027 which creates and returns a Node, if a Node can be created and\r\n  closed at the current position. If the TagSyntax instance cannot create a\r\n  Node at the current position, the method should return `null`. Some TagSyntax\r\n  subclasses will unconditionally create a tag in `close`, while others may be\r\n  unable to, such as LinkSyntax, if an inline or reference link could not be\r\n  resolved.\r\n\r\n* Loosely, the stack of TagStates is replaced with a stack of Delimiters and a\r\n  tree of parsed HTML nodes.\r\n* Emphasis and strong emphasis, link and image open delimiters are handled with\r\n  the \"look for link or image\" and \"process emphasis\" algorithms.\r\n* We combine adjacent text in a more intentional way, and likely more efficient\r\n  manner.\r\n* The _DelimiterRun class is replaced with three classes: abstract Delimiter\r\n  and subclasses SimpleDelimiter, and DelimiterRun.\r\n\r\nThese changes result in no new spec failures. Emphasis compliance rises from\r\n96% to 99%. Link compliance rises from 90% to 93%. Total CommonMark compliance\r\nrises from 93% to 94%. Total GFM compliance rises from 92% to 93%.\r\n\r\n* documentation and simplification\r\n\r\n* Fix test\r\n\r\n* revert gitignore\r\n\r\n* bump to 4.0.0-dev",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f67c6682790f49b197244eee47acd043ebb6e5fe",
      "old_mode": 33188,
      "old_path": "pkgs/markdown/CHANGELOG.md",
      "new_id": "07693c71a0e2064106f9c8c38b705311215ba451",
      "new_mode": 33188,
      "new_path": "pkgs/markdown/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "1759a7d4fb0180caed24ce167f1a2d26c2bf42f1",
      "old_mode": 33188,
      "old_path": "pkgs/markdown/lib/src/inline_parser.dart",
      "new_id": "b7797f39be4eddeb9230df6b288f7a102ec3e1e5",
      "new_mode": 33188,
      "new_path": "pkgs/markdown/lib/src/inline_parser.dart"
    },
    {
      "type": "modify",
      "old_id": "0ed1620d7d8afe7ad4d632075ee47fd58e8b4dae",
      "old_mode": 33188,
      "old_path": "pkgs/markdown/lib/src/version.dart",
      "new_id": "e46037245302a9fd90cc400f788557073cf38bab",
      "new_mode": 33188,
      "new_path": "pkgs/markdown/lib/src/version.dart"
    },
    {
      "type": "modify",
      "old_id": "30d64228a691f3fa455399082986dac1076bb386",
      "old_mode": 33188,
      "old_path": "pkgs/markdown/pubspec.yaml",
      "new_id": "bf43821d545d2fd234d4a5ba9d634f4d24766d10",
      "new_mode": 33188,
      "new_path": "pkgs/markdown/pubspec.yaml"
    },
    {
      "type": "modify",
      "old_id": "5b4b11f5a48a37fd9503fd6f699198dcd92f9357",
      "old_mode": 33188,
      "old_path": "pkgs/markdown/test/common_mark/emphasis_and_strong_emphasis.unit",
      "new_id": "67155bf40a7c6bf4e7b03e8a2a98074aaeb306db",
      "new_mode": 33188,
      "new_path": "pkgs/markdown/test/common_mark/emphasis_and_strong_emphasis.unit"
    },
    {
      "type": "modify",
      "old_id": "2650bf4e6d3018085e7c2fb2100f4eb39ec4efc3",
      "old_mode": 33188,
      "old_path": "pkgs/markdown/test/common_mark/images.unit",
      "new_id": "21949d797031ee0c9790a7b2c58bc0b91a890758",
      "new_mode": 33188,
      "new_path": "pkgs/markdown/test/common_mark/images.unit"
    },
    {
      "type": "modify",
      "old_id": "fb9cf5f4453a475b40a841e477d73a29003c72ed",
      "old_mode": 33188,
      "old_path": "pkgs/markdown/test/common_mark/links.unit",
      "new_id": "e362ba8e8e3f49d41ae4e675c473ab4f71eab98c",
      "new_mode": 33188,
      "new_path": "pkgs/markdown/test/common_mark/links.unit"
    },
    {
      "type": "modify",
      "old_id": "a42c14953e5862349a70c51b1dc3fd56beaa0a1f",
      "old_mode": 33188,
      "old_path": "pkgs/markdown/test/gfm/emphasis_and_strong_emphasis.unit",
      "new_id": "b4222a6c270972c7a768e4fc05d3772e093c30ae",
      "new_mode": 33188,
      "new_path": "pkgs/markdown/test/gfm/emphasis_and_strong_emphasis.unit"
    },
    {
      "type": "modify",
      "old_id": "63cefe957dea7faaebd71ce4be1af16aaba0d3f0",
      "old_mode": 33188,
      "old_path": "pkgs/markdown/test/gfm/images.unit",
      "new_id": "ed9b0bbc4b75cc1717fbd0abfe23d9af51ac8bc4",
      "new_mode": 33188,
      "new_path": "pkgs/markdown/test/gfm/images.unit"
    },
    {
      "type": "modify",
      "old_id": "698282d50d4558e99b06e36b108bf61e52584aec",
      "old_mode": 33188,
      "old_path": "pkgs/markdown/test/gfm/links.unit",
      "new_id": "9b56101ccf2b621ac048094f0c9dd4c434c7bb51",
      "new_mode": 33188,
      "new_path": "pkgs/markdown/test/gfm/links.unit"
    },
    {
      "type": "modify",
      "old_id": "4dbb2dc388cc8f2f5e72de49b9a443e557e1f45e",
      "old_mode": 33188,
      "old_path": "pkgs/markdown/tool/common_mark_stats.json",
      "new_id": "1248096d6e0839b32af7f068d32efe07661a473b",
      "new_mode": 33188,
      "new_path": "pkgs/markdown/tool/common_mark_stats.json"
    },
    {
      "type": "modify",
      "old_id": "668715232e8dbcbb1cddeafb587dd3ccf4b209ae",
      "old_mode": 33188,
      "old_path": "pkgs/markdown/tool/common_mark_stats.txt",
      "new_id": "152378433f99a882d6e10ca67182f8ba1038925a",
      "new_mode": 33188,
      "new_path": "pkgs/markdown/tool/common_mark_stats.txt"
    },
    {
      "type": "modify",
      "old_id": "af05236d675413548c6334ab645479351f325310",
      "old_mode": 33188,
      "old_path": "pkgs/markdown/tool/gfm_stats.json",
      "new_id": "465a8304cefc3da23bffff497a52dcfa103a30b3",
      "new_mode": 33188,
      "new_path": "pkgs/markdown/tool/gfm_stats.json"
    },
    {
      "type": "modify",
      "old_id": "9f7804ff8e2df1dc03fbc408349377ca246c31a0",
      "old_mode": 33188,
      "old_path": "pkgs/markdown/tool/gfm_stats.txt",
      "new_id": "4e04e48bece35fb635182bd1a744f6adf84b5f32",
      "new_mode": 33188,
      "new_path": "pkgs/markdown/tool/gfm_stats.txt"
    }
  ]
}
