Web Link¶
RFC 8288 (Web Linking) header parser.
The primary entry point is ParseLinkHeader, which takes a raw Link header
string and returns an array of WebLink values or an InvalidLinkHeader error.
match ParseLinkHeader(raw_header)
| let links: Array[WebLink val] val =>
for link in links.values() do
env.out.print(link.target + " rel=" + link.rel())
end
| let err: InvalidLinkHeader val =>
env.err.print("Parse error: " + err.string())
end
For simple use cases like HTTP API pagination, WebLink.rel() provides direct
access to the required rel parameter. Use WebLink.param() for other
parameters (type, hreflang, title, etc.).
Limitations¶
Multiple hreflang values on a single link (RFC 8288 allows repeated
hreflang parameters) are not supported; only the first occurrence is kept.
RFC 8187 extended parameter decoding (e.g. title*) is not performed; the raw
value is stored as-is.