This commit is contained in:
2026-09-13 10:20:16 +02:00
parent 019c8ad335
commit b72193d656
38 changed files with 1523 additions and 837 deletions

View File

@@ -9,8 +9,9 @@ Elle applique les mêmes principes que la matrice numérique :
```text
aucune conversion implicite
aucun mélange de types dans les opérations textuelles
to... uniquement pour une conversion totale et sûre
tryFrom... / tryTo... lorsqu'une validation ou une condition peut échouer
conversion directe vers la valeur attendue
faults UnicodeEncodingFault lorsqu'une validation runtime peut échouer
aucune variante try... parallèle si elle ne change que le canal d'échec
aucun alias redondant
conversion explicite d'abord, opération ensuite
```
@@ -106,8 +107,8 @@ Ces transcodages sont totaux.
UTF-8 :
```text
Utf8Char::tryFrom(uint8)
Utf8Char::tryFrom(StaticArray<uint8, N>)
Utf8Char::from(uint8) faults UnicodeEncodingFault
Utf8Char::from(StaticArray<uint8, N>) faults UnicodeEncodingFault
```
`N` utile : 1 à 4. Le contenu doit représenter exactement un scalar UTF-8 valide.
@@ -115,8 +116,8 @@ Utf8Char::tryFrom(StaticArray<uint8, N>)
UTF-16 :
```text
Utf16Char::tryFrom(uint16)
Utf16Char::tryFrom(StaticArray<uint16, 2>)
Utf16Char::from(uint16) faults UnicodeEncodingFault
Utf16Char::from(StaticArray<uint16, 2>) faults UnicodeEncodingFault
```
Un surrogate isolé est invalide.
@@ -124,7 +125,7 @@ Un surrogate isolé est invalide.
UTF-32 :
```text
Utf32Char::tryFrom(uint32)
Utf32Char::from(uint32) faults UnicodeEncodingFault
```
La valeur doit être <= `0x10FFFF` et hors de la plage surrogate.
@@ -132,15 +133,17 @@ La valeur doit être <= `0x10FFFF` et hors de la plage surrogate.
Le nom de travail de l'erreur est :
```text
UnicodeEncodingError extends ResultError
UnicodeEncodingFault extends Fault
```
Le Core ne fournit pas simultanément une variante `tryFrom... -> Result` ayant exactement la même validation. Si un domaine applicatif souhaite transporter l'échec comme valeur, il peut encapsuler explicitement la construction dans son propre `Result`.
## B.7. `UtfXChar` -> code unit brute
| Source | Destination | Opération | Raison |
|---|---|---|---|
| `Utf8Char` | `uint8` | `tryToUint8()` | 1 à 4 unités possibles |
| `Utf16Char` | `uint16` | `tryToUint16()` | 1 ou 2 unités possibles |
| `Utf8Char` | `uint8` | `toUint8() faults UnicodeEncodingFault` | 1 à 4 unités possibles |
| `Utf16Char` | `uint16` | `toUint16() faults UnicodeEncodingFault` | 1 ou 2 unités possibles |
| `Utf32Char` | `uint32` | `toUint32()` | exactement 1 unité |
Les séquences complètes de code units sont accessibles via `codeUnits()`. Le type concret de vue retourné sera fixé avec les collections/slices.
@@ -176,9 +179,9 @@ Tous ces transcodages sont explicites et totaux.
Conceptuellement :
```text
Utf8String::tryFrom(Array<uint8>)
Utf16String::tryFrom(Array<uint16>)
Utf32String::tryFrom(Array<uint32>)
Utf8String::from(Array<uint8>) faults UnicodeEncodingFault
Utf16String::from(Array<uint16>) faults UnicodeEncodingFault
Utf32String::from(Array<uint32>) faults UnicodeEncodingFault
```
Le type exact accepté pourra inclure des slices/vues lors de leur définition.
@@ -283,5 +286,5 @@ les opérations mutantes sont interdites via `text`, mais un autre alias mutable
3. nom exact de l'API de décodage depuis un offset de code unit ;
4. API précise de concaténation et ses opérateurs ;
5. builders/buffers et leurs relations avec les strings valides ;
6. codes définitifs de `UnicodeEncodingError` ;
6. codes définitifs de `UnicodeEncodingFault` ;
7. localisation Core/SDK des opérations Unicode avancées : graphemes, normalisation, case folding, collation.