)]}'
{
  "commit": "1c8e13f511cfea01ad67150293278730dc34df7b",
  "tree": "2ee44a32ed989f0458677e7c5768144f6c594bae",
  "parents": [
    "49fb99d2556da6c4ca1a9e7af2736217c9dccdba"
  ],
  "author": {
    "name": "Taylor Cramer",
    "email": "cramertj@google.com",
    "time": "Thu Oct 22 20:55:11 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Thu Oct 22 20:56:03 2026 -0700"
  },
  "message": "Expand Crubit live-snippets on crubit.rs with an mdBook preprocessor.\n\nPreviously, Copybara rewrote each g3doc `live-snippet` into an mdBook\n`{{#include}}` of the whole file, dropping the Code Search query (e.g.\n`function:clamp_value`) into an HTML comment. On crubit.rs, every snippet\ntherefore showed the entire file, including the license header, and\nsnippets nested in lists or outside `g3doc/*/*.md` did not work at all.\n\nThis adds `tools/mdbook_live_snippet`, a small mdBook preprocessor that\nexpands `live-snippet` blocks itself, approximating g3doc semantics:\n\n* no query: the whole file, minus the license header;\n* `content:\u003cregex\u003e`: the lines touched by matches (with `.` matching\n  newlines, as Crubit docs already assume);\n* `function:`, `class:`, `symbol:`: the matching definitions, including\n  leading comments and attributes, found with a lightweight lexer for\n  C++ and Rust, and by target name for BUILD files.\n\nSnippets keep their indentation, and any snippet that fails to resolve\nfails the docs build instead of silently rendering the wrong code.\n\nCopybara now only rewrites snippet paths to be repository-relative, and\nbook.toml builds and runs the preprocessor with Cargo.\n\nPiperOrigin-RevId: 1005273630\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fe95e87979c998e88ac8f0a067603255802c93c9",
      "old_mode": 33188,
      "old_path": "book.toml",
      "new_id": "38c3ec800aea7c2d62a7b880b2dcb039fef91dbd",
      "new_mode": 33188,
      "new_path": "book.toml"
    },
    {
      "type": "modify",
      "old_id": "cd5d420abf984c2bd7ec1bd533b2c58d948fb016",
      "old_mode": 33188,
      "old_path": "docs/cpp/carcinize.md",
      "new_id": "b5de6695bb2efc380a3f64e8586892f1cc284880",
      "new_mode": 33188,
      "new_path": "docs/cpp/carcinize.md"
    },
    {
      "type": "modify",
      "old_id": "a6a9010662dc636e7bdecba1b4ece378f5f17559",
      "old_mode": 33188,
      "old_path": "docs/cpp/classes_and_structs.md",
      "new_id": "20b6adb558921886e768c95df9ece193d62c4793",
      "new_mode": 33188,
      "new_path": "docs/cpp/classes_and_structs.md"
    },
    {
      "type": "modify",
      "old_id": "2630ff200f74699bab61bea4ce1f9a6332f555e2",
      "old_mode": 33188,
      "old_path": "docs/cpp/customizing.md",
      "new_id": "4d319ed10cf801440485580f06332644104377bc",
      "new_mode": 33188,
      "new_path": "docs/cpp/customizing.md"
    },
    {
      "type": "modify",
      "old_id": "52c47a3d611235a25707db3b98d31f8b8e9d7637",
      "old_mode": 33188,
      "old_path": "docs/cpp/enums.md",
      "new_id": "38be4f924f56e5e0dddf6ccf9b94a8c01e0a7a51",
      "new_mode": 33188,
      "new_path": "docs/cpp/enums.md"
    },
    {
      "type": "modify",
      "old_id": "14f842456d2200795e72c25a95ba820c6f8d088b",
      "old_mode": 33188,
      "old_path": "docs/cpp/functions.md",
      "new_id": "ac2baac143e8bc64a7b043154d68a68038ef2509",
      "new_mode": 33188,
      "new_path": "docs/cpp/functions.md"
    },
    {
      "type": "modify",
      "old_id": "7e3d143c5fd7d830dacbb72b2f11dce790e23dd2",
      "old_mode": 33188,
      "old_path": "docs/cpp/index.md",
      "new_id": "427064f642ec75ad603f2fa6a344612106fccbce",
      "new_mode": 33188,
      "new_path": "docs/cpp/index.md"
    },
    {
      "type": "modify",
      "old_id": "cbcecbe55aee1db19eed98dd811bb8499829b1e9",
      "old_mode": 33188,
      "old_path": "docs/cpp/inline_cpp.md",
      "new_id": "24a17779e99b3ba0147f3b039340f3beb5b3d495",
      "new_mode": 33188,
      "new_path": "docs/cpp/inline_cpp.md"
    },
    {
      "type": "modify",
      "old_id": "15f4c2495fbb215ac655e12a310d60858a95c9c1",
      "old_mode": 33188,
      "old_path": "docs/cpp/operator_overloading.md",
      "new_id": "1baa0e0b2ca850d60c4a7c51efa154f4007603df",
      "new_mode": 33188,
      "new_path": "docs/cpp/operator_overloading.md"
    },
    {
      "type": "modify",
      "old_id": "6032eb66141bd91a96dbeda4f6c7f5bae7bcb061",
      "old_mode": 33188,
      "old_path": "docs/cpp/references_and_lifetimes.md",
      "new_id": "adb0b08a04f0f897635f8b9107dacd1540a8fa44",
      "new_mode": 33188,
      "new_path": "docs/cpp/references_and_lifetimes.md"
    },
    {
      "type": "modify",
      "old_id": "2a0963c08b64b20be45ad70ca125acf776b6aa6e",
      "old_mode": 33188,
      "old_path": "docs/overview/bazel.md",
      "new_id": "92a50579a0c8fd6185ad9d22d7b5194f2abfa664",
      "new_mode": 33188,
      "new_path": "docs/overview/bazel.md"
    },
    {
      "type": "modify",
      "old_id": "22a8f3fea4412176b4bbc7b2582e7b4f4627f8a2",
      "old_mode": 33188,
      "old_path": "docs/overview/cmake.md",
      "new_id": "d817c674306a5d6f2bf9fca076f6803bb2150a89",
      "new_mode": 33188,
      "new_path": "docs/overview/cmake.md"
    },
    {
      "type": "modify",
      "old_id": "96df6a821965808e95648ace4c84acc9c5bb6111",
      "old_mode": 33188,
      "old_path": "docs/rust/cpp_enums.md",
      "new_id": "ae0c9a76a86105cd470d9afff10011723a655f4f",
      "new_mode": 33188,
      "new_path": "docs/rust/cpp_enums.md"
    },
    {
      "type": "modify",
      "old_id": "fe9898f073c97a73ba81e8fac5a5b3664dcc19e3",
      "old_mode": 33188,
      "old_path": "docs/rust/enums.md",
      "new_id": "2ebe411ca390290ea03343256c28842ce921b011",
      "new_mode": 33188,
      "new_path": "docs/rust/enums.md"
    },
    {
      "type": "modify",
      "old_id": "5cdb59594a02304efffbc2740c5117168dd7bb0a",
      "old_mode": 33188,
      "old_path": "docs/rust/functions.md",
      "new_id": "f52d18cdb7cdb923f6c2a2e0499a1b083703cd40",
      "new_mode": 33188,
      "new_path": "docs/rust/functions.md"
    },
    {
      "type": "modify",
      "old_id": "d518ddb690c59397831eeac26cd4d966b88c36c4",
      "old_mode": 33188,
      "old_path": "docs/rust/index.md",
      "new_id": "fe9390f1540791bb7990ad748d38799075ab28a4",
      "new_mode": 33188,
      "new_path": "docs/rust/index.md"
    },
    {
      "type": "modify",
      "old_id": "54f7d9d1f49d6595221acf412c2980a71d149377",
      "old_mode": 33188,
      "old_path": "docs/rust/structs.md",
      "new_id": "c7333d61b8a5ce5f6abce436ad7d75d6e28c8560",
      "new_mode": 33188,
      "new_path": "docs/rust/structs.md"
    },
    {
      "type": "modify",
      "old_id": "d5689d618a352b1b4cff7c8df3d0509a26bceff0",
      "old_mode": 33188,
      "old_path": "docs/rust/traits.md",
      "new_id": "1feaf82bd45a0bd8a476afb8a8127922607c2e95",
      "new_mode": 33188,
      "new_path": "docs/rust/traits.md"
    },
    {
      "type": "modify",
      "old_id": "1ac99ff52ea38c6c95b4c2b7ee0f20a82967d714",
      "old_mode": 33188,
      "old_path": "docs/rust/type_aliases.md",
      "new_id": "67404db77f0ac4c452c4ad9a235d16d25b7c7ffa",
      "new_mode": 33188,
      "new_path": "docs/rust/type_aliases.md"
    },
    {
      "type": "modify",
      "old_id": "191f31fa56b5eee5c3066eab28c660f33cbcc577",
      "old_mode": 33188,
      "old_path": "docs/rust/use_declarations.md",
      "new_id": "e742c0cde62ed901daa5e6a066cdf9009c773e41",
      "new_mode": 33188,
      "new_path": "docs/rust/use_declarations.md"
    },
    {
      "type": "modify",
      "old_id": "b8c3c3079d0d7def791a6311512f02c51b9c52e9",
      "old_mode": 33188,
      "old_path": "docs/types/absl_status.md",
      "new_id": "dedb1ac79c56030fa26bb4556764fd7f2a002167",
      "new_mode": 33188,
      "new_path": "docs/types/absl_status.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c831050a57eb17e70cbc07bceac8a194877f0147",
      "new_mode": 33188,
      "new_path": "tools/mdbook_live_snippet/Cargo.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "efad080a0166f669fdb35d51001b6a8e2f1e48f7",
      "new_mode": 33188,
      "new_path": "tools/mdbook_live_snippet/src/lex.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b11cd3cc9bcf1fd2f1c9ea084b468869359d8f60",
      "new_mode": 33188,
      "new_path": "tools/mdbook_live_snippet/src/lib.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "71e2bf66b0025ff23ec3da70ec534bb5fb74d617",
      "new_mode": 33188,
      "new_path": "tools/mdbook_live_snippet/src/main.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "68105324832e2e24aa637c62322dc781fa7be449",
      "new_mode": 33188,
      "new_path": "tools/mdbook_live_snippet/src/tests.rs"
    }
  ]
}
