Fix URL remapping for page references#1395
Merged
Merged
Conversation
Julow
reviewed
Dec 17, 2025
| } | ||
|
|
||
| let ensure_trailing_slash s = | ||
| if Astring.String.is_suffix ~affix:"/" s then s else s ^ "/" |
Collaborator
There was a problem hiding this comment.
I don't think a possibly long list of string with requirements in them is the right data structure.
I think a Trie structure would be better.
Member
Author
There was a problem hiding this comment.
True, though this PR doesn't change that. It'll be a good future improvement.
Comment on lines
+30
to
+31
| String.sub path (String.length prefix) | ||
| (String.length path - String.length prefix) |
Collaborator
There was a problem hiding this comment.
This is also Astring.String.with_range ~first:(String.length prefix) path.
Page links were not being remapped because the remap prefix check only matched against the directory path. For modules, the module name is part of the directory (e.g., prefix/otherpkg/Otherlib/index.html), so it matched. But for pages, the page name is in the filename (e.g., prefix/otherpkg/otherpage.html), leaving only prefix/otherpkg in the directory - which didn't match prefix/otherpkg/ due to the trailing slash. Fix by including the filename in the path used for prefix matching. Also normalize remap entries at config creation time (ensure trailing slashes) rather than on each lookup. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
e6019f4 to
c6c97ca
Compare
jonludlam
added a commit
to jonludlam/opam-repository
that referenced
this pull request
May 1, 2026
CHANGES: - Allow persistent latex macros in HTML/KaTeX backend (@dlesbre, ocaml/odoc#1391) - `markdown-generate` command now accepts multiple `.odocl` files in a single invocation, eliminating the need for shell scripting (@davesnx, ocaml/odoc#1387) - Support for OxCaml (@lukemaurer, @art-w, ocaml/odoc#1399) - OCaml 5.5.0 support (@panglesd, @xvw, ocaml/odoc#1406) - Fix compile-time crashing bugs ocaml/odoc#930 and ocaml/odoc#1385 (@jonludlam, ocaml/odoc#1400) - Markdown backend assumes ocaml as langId on declarations - Markdown backend collects all code snippets and render a single code block with comments, rather than split the variants/records per constructor/field - Fix URL remapping for page references (@jonludlam, ocaml/odoc#1395) - Fix ocaml/odoc#1396, which broke incrememntal builds (@jonludlam, ocaml/odoc#1402) - Ensure all warnings turn into errors with --warn-error (@jonludlam, ocaml/odoc#1402) - Fix missing parentheses for polymorphic arguments (@art-w, ocaml/odoc#1404)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Page links were not being remapped because the remap prefix check only matched against the directory path. For modules, the module name is part of the directory (e.g., prefix/otherpkg/Otherlib/index.html), so it matched. But for pages, the page name is in the filename (e.g., prefix/otherpkg/otherpage.html), leaving only prefix/otherpkg in the directory - which didn't match prefix/otherpkg/ due to the trailing slash.
Fix by including the filename in the path used for prefix matching. Also normalize remap entries at config creation time (ensure trailing slashes) rather than on each lookup.
🤖 Generated with Claude Code