site: Preserve heading anchor IDs in docs2mdx conversion (https://github.com/bazelbuild/bazel/pull/30704) ## Summary Reference doc pages like [common-definitions](https://bazel.build/versions/9.1.0/reference/be/common-definitions) expose a Contents section with links such as `#common-attributes`, but those anchors are broken on the published site. The source Velocity template `common-definitions.vm` renders headings with explicit ids: ```html <h2 id='common-attributes'>Attributes common to all build rules</h2> ``` After `docs2mdx.py` converts the generated HTML to MDX, the heading becomes plain markdown with no anchor: ```markdown ## Attributes common to all build rules ``` This PR updates `docs2mdx.py` to convert HTML headings with `id` attributes to MDX anchor syntax (`## Title {#id}`) before markdownify runs, and restores anchors after markdownify escapes curly braces in heading text. Fixes bazelbuild/bazel#30617 ## Test plan ### Unit tests - [x] `bazel test //scripts/docs:rewriter_test` - [x] `bazel test //scripts/docs:docs2mdx_test` — single/double-quoted ids, extra attributes, h3 headings ### Mintlify preview Preview: https://bazel-pr-30704.mintlify.app/ | Check | URL | Expected | |-------|-----|----------| | [ ] Anchor resolves | `/reference/be/common-definitions#common-attributes` | Page scrolls to "Attributes common to all build rules" | | [ ] Contents TOC link | `/reference/be/common-definitions` → click `#common-attributes` in Contents | Same section | | [ ] Other anchors | `#typical-attributes`, `#common-attributes-tests` | Resolve correctly | - [x] Preview deployed (bazel-docs bot comment) - [ ] Anchor deep links verified in preview (requires reference doc regen in preview build) ### Post-merge - [ ] Regenerate reference docs via `bazel build --config=docs //src/main/java/com/google/devtools/build/lib:gen_mdx_reference_docs` Closes #30704. PiperOrigin-RevId: 972587453 Change-Id: Ibfef830fce4525d746aff992bd990bab3f501eac
{Fast, Correct} - Choose two
Build and test software of any size, quickly and reliably.
Speed up your builds and tests: Bazel rebuilds only what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.
One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.
Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.
Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.
To report a security issue, please email security@bazel.build with a description of the issue, the steps you took to create the issue, affected versions, and, if known, mitigations for the issue. Our vulnerability management team will respond within 3 working days of your email. If the issue is confirmed as a vulnerability, we will open a Security Advisory. This project follows a 90 day disclosure timeline.
See CONTRIBUTING.md