RelativeUrl
A relative reference (RFC 3986): a path, a query or a fragment, or a host after //, with no scheme: ../images/logo.png, ?page=2. web.resolve makes a Url of one.
Web and network; not ordered; since Jadpo 0.1.0.
Make one
Build one from its text, RelativeUrl("../images/logo.png"), which checks it: text that isn't one breaks format.
text.parse(raw, as: RelativeUrl) reads one from its text; text that isn't one at all fails malformed, such as https://example.com/, mailto:someone@example.com or a:b.
Text, JSON and storage
text.from writes its canonical text, the one form text.parse reads back. JSON sends its canonical text as a string.
| Text | JSON |
|---|---|
../images/logo.png |
"../images/logo.png" |
/docs?page=2#intro |
"/docs?page=2#intro" |
//cdn.example.com/app.js |
"//cdn.example.com/app.js" |
?sort=name |
"?sort=name" |
#top |
"#top" |
caf%C3%A9.html |
"caf%C3%A9.html" |
It is stored in one column named for the field, of type text. ?sort=name is stored as '?sort=name'.
Shown to people
text.format(value, locale:) shows it to people in their locale.
With locale: Locale.en_gb:
| Value | Shown |
|---|---|
../images/logo.png |
../images/logo.png |
/docs?page=2#intro |
/docs?page=2#intro |
//cdn.example.com/app.js |
//cdn.example.com/app.js |
?sort=name |
?sort=name |
#top |
#top |
caf%C3%A9.html |
caf%C3%A9.html |
Operations
web.resolve(base: Url, relative: RelativeUrl) -> Url:relativeresolved againstbaseby RFC 3986 (section 5.2): its.and..segments followed, a path starting/taken from the host, a query or a fragment alone kept with the base's path. AUrlPathis aRelativeUrl, so it resolves too.
Like every standard type, it also has the contract's own operations: text.parse, text.from, text.format, json.read, json.write and ==. It isn't ordered, so < and sorting don't take it. Every standard type meets one contract says how they work.
Markdown for agents: /docs/types/type-relative-url.md.Built from Jadpo main at e00e61f.