pkl icon indicating copy to clipboard operation
pkl copied to clipboard

Pkldoc generates broken page anchors

Open translatenix opened this issue 3 months ago • 3 comments

Searching the standard library docs, I noticed that I always land at the top of the page, not at the function I search for. For example, searching for sort takes me to https://pkl-lang.org/package-docs/pkl/current/base/Collection.html#sort(). But #sort() doesn't exist, so I land at the top of the page. Inspecting the page source, I found that id attributes are erroneously percent-encoded:

<div id="sort%28%29" class="anchor">

translatenix avatar Apr 04 '24 18:04 translatenix

Thanks for the error report.

Although, it's not strictly necessary, the percent-encoding there is intentional (we are using java.net.URLEncoder underneath the hood to encode links and anchors).

We should similarly run links from the generated search index through URLEncoder.

bioball avatar Apr 04 '24 18:04 bioball

Although, it's not strictly necessary, the percent-encoding there is intentional (we are using java.net.URLEncoder underneath the hood to encode links and anchors). We should similarly run links from the generated search index through URLEncoder.

Unnecessarily obfuscating Pkldoc URLs will result in a worse user experience. Swift and Scala API docs are fine with parentheses in URL paths/fragments, as is the URL spec.

https://developer.apple.com/documentation/swift/array/sorted(by:) https://www.scala-lang.org/api/2.13.5/scala/collection/SeqOps.html#sortWith(lt:(A,A)=>Boolean):C https://url.spec.whatwg.org/#path-percent-encode-set https://url.spec.whatwg.org/#fragment-percent-encode-set

From https://docs.rs/crate/percent-encoding/2.3.1 (emphasis mine):

When encoding, the set of characters that can (and should, for readability) be left alone depends on the context.

translatenix avatar Apr 04 '24 19:04 translatenix

Yup, it definitely doesn't need to encode parentheses. It'd certainly be an improvement to not encode them here.

bioball avatar Apr 04 '24 22:04 bioball