# `WritingScript`

A writing system (ISO 15924), written as its code, `Latn`; `form: CodeForm.numeric` writes its number, `215`.

[Places](types.md#places); not ordered; since Jadpo 0.1.0.

## Make one

Pick one of its variants, `WritingScript.adlm`.

`text.parse(raw, as: WritingScript)` reads one from its text; text that isn't one at all fails `malformed`, such as `latin`, `Lat` or `Latnn`.

## Variants

224 variants. Each is its code in lower case, with `_` for every other character: `WritingScript.adlm` is written `Adlm`. The codes: `Adlm`, `Afak`, `Aghb`, `Ahom`, `Arab`, `Aran`, `Armi`, `Armn`, `Avst`, `Bali`, `Bamu`, `Bass`, `Batk`, `Beng`, `Berf`, `Bhks`, `Blis`, `Bopo`, `Brah`, `Brai`, `Bugi`, `Buhd`, `Cakm`, `Cans`, `Cari`, `Cham`, `Cher`, `Chis`, `Chrs`, `Cirt`, `Copt`, `Cpmn`, `Cprt`, `Cyrl`, `Cyrs`, `Deva`, `Diak`, `Dogr`, `Dsrt`, `Dupl`, `Egyd`, `Egyh`, `Egyp`, `Elba`, `Elym`, `Ethi`, `Gara`, `Geok`, `Geor`, `Glag`, `Gong`, `Gonm`, `Goth`, `Gran`, `Grek`, `Gujr`, `Gukh`, `Guru`, `Hanb`, `Hang`, `Hani`, `Hano`, `Hans`, `Hant`, `Hatr`, `Hebr`, `Hira`, `Hluw`, `Hmng`, `Hmnp`, `Hntl`, `Hrkt`, `Hung`, `Inds`, `Ital`, `Jamo`, `Java`, `Jpan`, `Jurc`, `Kali`, `Kana`, `Kawi`, `Khar`, `Khmr`, `Khoj`, `Kitl`, `Kits`, `Knda`, `Kore`, `Kpel`, `Krai`, `Kthi`, `Lana`, `Laoo`, `Latf`, `Latg`, `Latn`, `Leke`, `Lepc`, `Limb`, `Lina`, `Linb`, `Lisu`, `Loma`, `Lyci`, `Lydi`, `Mahj`, `Maka`, `Mand`, `Mani`, `Marc`, `Maya`, `Medf`, `Mend`, `Merc`, `Mero`, `Mlym`, `Modi`, `Mong`, `Moon`, `Mroo`, `Mtei`, `Mult`, `Mymr`, `Nagm`, `Nand`, `Narb`, `Nbat`, `Newa`, `Nkdb`, `Nkgb`, `Nkoo`, `Nshu`, `Ogam`, `Olck`, `Onao`, `Orkh`, `Orya`, `Osge`, `Osma`, `Ougr`, `Palm`, `Pauc`, `Pcun`, `Pelm`, `Perm`, `Phag`, `Phli`, `Phlp`, `Phlv`, `Phnx`, `Piqd`, `Plrd`, `Prti`, `Psin`, `Ranj`, `Rjng`, `Rohg`, `Roro`, `Runr`, `Samr`, `Sara`, `Sarb`, `Saur`, `Seal`, `Sgnw`, `Shaw`, `Shrd`, `Shui`, `Sidd`, `Sidt`, `Sind`, `Sinh`, `Sogd`, `Sogo`, `Sora`, `Soyo`, `Sund`, `Sunu`, `Sylo`, `Syrc`, `Syre`, `Syrj`, `Syrn`, `Tagb`, `Takr`, `Tale`, `Talu`, `Taml`, `Tang`, `Tavt`, `Tayo`, `Telu`, `Teng`, `Tfng`, `Tglg`, `Thaa`, `Thai`, `Tibt`, `Tirh`, `Tnsa`, `Todr`, `Tols`, `Toto`, `Tutg`, `Ugar`, `Vaii`, `Visp`, `Vith`, `Wara`, `Wcho`, `Wole`, `Xpeo`, `Xsux`, `Yezi`, `Yiii`, `Zanb`, `Zinh`, `Zmth`, `Zsye`, `Zsym`, `Zxxx`, `Zyyy`, `Zzzz`.

## 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 |
|---|---|
| `Jpan` | `"Jpan"` |
| `Latn` | `"Latn"` |
| `Zyyy` | `"Zyyy"` |

It is stored in one column named for the field, of type `text`. `Latn` is stored as `'Latn'`.

## Shown to people

`text.format(value, locale:)` shows it to people in their locale.

With `locale: Locale.en_gb`:

| Value | Shown |
|---|---|
| `Jpan` | `Japanese` |
| `Latn` | `Latin` |
| `Zyyy` | `Common` |

## 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](../topics/every-standard-type-meets-one-contract.md) says how they work.
