Support code blocks within markdown tables

Markdown tables (GFM tables) require rows to be specified on single
lines, preventing standard fenced or indented code blocks within cells.
Documentation generators (such as Bazel Stardoc) generate code blocks
inside table cells using <pre><code>...</code></pre> (or <pre>...)
with HTML line breaks or entity-encoded newlines (&#10;).

Previously, GitilesHtmlExtension ignored <pre> and <code> inline
tags, causing MarkdownToHtml to strip them and rendering code blocks as
plain inline text with collapsed spaces and no code styling.
Additionally, when GitilesHtmlExtension unlinked replaced sibling nodes
(such as closing anchor tags), the visitor traversal prematurely ended,
skipping subsequent siblings in the same container.

This change adds:
1. TableCodeBlock, a CustomNode representing code blocks in inline
   contexts like table cells.
2. Handling in GitilesHtmlExtension to scan <pre> / <code> tags,
   extract language attributes, preserve newlines and code formatting,
   and convert them to TableCodeBlock (and FencedCodeBlock for block
   HTML).
3. Traversal in GitilesHtmlExtension.visitChildren that safely advances
   past replaced sibling ranges without skipping siblings.
4. Support for <a id="..."> anchors in addition to <a name="...">.
5. Visitor handling in MarkdownToHtml to render TableCodeBlock via
   codeInPre(...).

Change-Id: I75c6420f19537d6b9836294f58bcdc6405410192
4 files changed
tree: 377a832903fa3532fa0621cdf4bc3a8d3934879f
  1. .settings/
  2. Documentation/
  3. java/
  4. javatests/
  5. lib/
  6. modules/
  7. resources/
  8. tools/
  9. .bazelignore
  10. .bazelrc
  11. .bazelversion
  12. .gitignore
  13. .gitmodules
  14. .mailmap
  15. .zuul.yaml
  16. BUILD
  17. COPYING
  18. external_deps.lock.json
  19. fake_pom_deploy.xml
  20. MODULE.bazel
  21. MODULE.bazel.lock
  22. navbar.md
  23. README.md
  24. version.bzl
README.md

Gitiles - A simple JGit repository browser

Gitiles is a simple repository browser for Git repositories, built on JGit. Its guiding principle is simplicity: it has no formal access controls, no write access, no fancy Javascript, etc.

Gitiles automatically renders *.md Markdown files into HTML for simplified documentation. Refer to the Markdown documentation for details.

Configuration

Gitiles is configurable in a git-style configuration file named gitiles.config. Refer to the configuration documentation for details.

Bugs

Use gerrit's issue tracker to file bugs.

Contributing to Gitiles

Please refer to the Developer Guide.