)]}'
{
  "commit": "4736754e587ed3f69211fc8ddfb7f79798d2d95d",
  "tree": "b057633129da514937bcb4e44963f9e370c6a864",
  "parents": [
    "b124535d9022636a7fd41f702f111377a2125582"
  ],
  "author": {
    "name": "Alexandre Rostovtsev",
    "email": "arostovtsev@google.com",
    "time": "Tue Aug 01 16:06:06 2023 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Aug 01 16:06:06 2023 -0400"
  },
  "message": "In Markdown table cells, apply HTML escaping only to code blocks, and apply it properly (#167)\n\nIn Markdown table cells, apply HTML escaping only to code blocks, and apply it properly\r\n\r\nSince #161 removed HTML escaping for defaults and function docstrings, we should do the same for attribute and param docs in table cells.\r\n\r\nThe only limitations Markdown places on table cells are:\r\n* no pipe characters (they must be escaped with a backslash)\r\n* no newlines (they must be transformed into `\u003cbr\u003e` or an HTML entity)\r\n\r\nThe latter restriction makes it impossible to have a fenced code block inside a table cell.\r\n\r\nTherefore:\r\n* we do not escape HTML or Markdown markup outside a fenced code block\r\n* we keep existing logic for escaping newlines outside a fenced code block\r\n* we fix fence detection (e.g. allowing more than 3 fence characters to support embedded code blocks in code blocks, allowing tildes as fence characters, properly handling language names, etc.);\r\n* in code block content, we escape HTML, and we escape newlines as HTML entities (since `\u003cbr\u003e` does not work in a `\u003cpre\u003e\u003ccode\u003e` block) - finally fixing code block newlines in table cells.\r\n    \r\nThis is a followup to #161.\r\n\r\nPartially addresses #118",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3c5dc7917c704544544a05ad50c97b8f27fbf57d",
      "old_mode": 33188,
      "old_path": "docs/stardoc_rule.md",
      "new_id": "0d8f0a8c5fc42f663346f5614eefbbc1c17c6b4a",
      "new_mode": 33188,
      "new_path": "docs/stardoc_rule.md"
    },
    {
      "type": "modify",
      "old_id": "00580c21a00517a4cc150b2738004f8bafffb325",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skydoc/rendering/MarkdownUtil.java",
      "new_id": "afb2b5e2937b830d7da1ad8c6862d18b4829fb00",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skydoc/rendering/MarkdownUtil.java"
    },
    {
      "type": "modify",
      "old_id": "14d3c2a498176390ce8b6cb7f293cf16ccb5f5eb",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/skydoc/rendering/MarkdownUtilTest.java",
      "new_id": "4c37a38913d6367e807de37f0b2a5eabf36e0924",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/skydoc/rendering/MarkdownUtilTest.java"
    },
    {
      "type": "modify",
      "old_id": "fdc1c476dd1b1bd25ba63fa27fa21e9d00092007",
      "old_mode": 33188,
      "old_path": "test/bzlmod/docs.md.golden",
      "new_id": "3b671cc001fd11b1695b0a9310a30c91237b5cb6",
      "new_mode": 33188,
      "new_path": "test/bzlmod/docs.md.golden"
    },
    {
      "type": "modify",
      "old_id": "d487cfd0aeb1f7737d4f2dd6defe7f96338173fd",
      "old_mode": 33188,
      "old_path": "test/testdata/angle_bracket_test/golden.md",
      "new_id": "06496b2b1b7ae545b88c5593f0885790ae9b300b",
      "new_mode": 33188,
      "new_path": "test/testdata/angle_bracket_test/golden.md"
    },
    {
      "type": "modify",
      "old_id": "6ef8c4085a982eb791f6e5ffc5af7b4c822ab92c",
      "old_mode": 33188,
      "old_path": "test/testdata/angle_bracket_test/input.bzl",
      "new_id": "09152158f75615ee9a76b3f43ebbf5b73aca01f8",
      "new_mode": 33188,
      "new_path": "test/testdata/angle_bracket_test/input.bzl"
    },
    {
      "type": "modify",
      "old_id": "a9ccc14273edb36069d23d691204df9fabe306ae",
      "old_mode": 33188,
      "old_path": "test/testdata/angle_bracket_test/legacy_golden.md",
      "new_id": "d6457b21125762fa3e1e08b17bae3dd4ec7f4b85",
      "new_mode": 33188,
      "new_path": "test/testdata/angle_bracket_test/legacy_golden.md"
    },
    {
      "type": "modify",
      "old_id": "d3db17da76c22812d80fb0dcac9ecad5273349f6",
      "old_mode": 33188,
      "old_path": "test/testdata/function_basic_test/golden.md",
      "new_id": "bf758b18dc7471337d225b95344ca0e56f2db343",
      "new_mode": 33188,
      "new_path": "test/testdata/function_basic_test/golden.md"
    },
    {
      "type": "modify",
      "old_id": "4397beda568a51626dea8134db257957851593b0",
      "old_mode": 33188,
      "old_path": "test/testdata/provider_basic_test/golden.md",
      "new_id": "99cd9445b869a0ba8a78dfe9dd490432e1422a4a",
      "new_mode": 33188,
      "new_path": "test/testdata/provider_basic_test/golden.md"
    },
    {
      "type": "modify",
      "old_id": "9b5ecff49a6603569916e0a6a6b5a54b8766a812",
      "old_mode": 33188,
      "old_path": "test/testdata/pure_markdown_template_test/golden.md",
      "new_id": "62a9327395bc5bb1832714c82dd0d3c2b5c6a54f",
      "new_mode": 33188,
      "new_path": "test/testdata/pure_markdown_template_test/golden.md"
    },
    {
      "type": "modify",
      "old_id": "75befef6e02ddd0d5ad7565f51eeb6f68d439069",
      "old_mode": 33188,
      "old_path": "test/testdata/repo_rules_test/golden.md",
      "new_id": "67a1074a2d92ac8a5b4bab9f2e7adb3da9e530d0",
      "new_mode": 33188,
      "new_path": "test/testdata/repo_rules_test/golden.md"
    },
    {
      "type": "modify",
      "old_id": "639b5c70ad38f6619927c221b23cdebee559defc",
      "old_mode": 33188,
      "old_path": "test/testdata/repo_rules_test/legacy_golden.md",
      "new_id": "c0084fadf9cba3711ab8b6c86807826bd9de3e47",
      "new_mode": 33188,
      "new_path": "test/testdata/repo_rules_test/legacy_golden.md"
    }
  ]
}
