DomainName
A domain name (IDNA 2008 by UTS 46), lower case, each label beyond ASCII as its A-label, with no dot at the end: xn--mnchen-3ya.de. Every domain name is a Hostname.
Web and network; not ordered; since Jadpo 0.1.0.
Make one
Build one from its text, DomainName("example.com"), which checks it: text that isn't one breaks format.
text.parse(raw, as: DomainName) reads one from its text; text that isn't one at all fails malformed, such as Example.com, example.com. or -example.com.
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 |
|---|---|
example.com |
"example.com" |
www.example.co.uk |
"www.example.co.uk" |
xn--mnchen-3ya.de |
"xn--mnchen-3ya.de" |
localhost |
"localhost" |
It is stored in one column named for the field, of type text. xn--mnchen-3ya.de is stored as 'xn--mnchen-3ya.de'.
Shown to people
text.format(value, locale:) shows it to people in their locale.
With locale: Locale.en_gb:
| Value | Shown |
|---|---|
example.com |
example.com |
www.example.co.uk |
www.example.co.uk |
xn--mnchen-3ya.de |
xn--mnchen-3ya.de |
localhost |
localhost |
Operations
It 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-domain-name.md.Built from Jadpo main at e00e61f.