def utf8.lead

mylsm-lsm-store@0.6.0.1 · src/StorageBytes.bend:8

import mylsm-lsm-store@0.6.0.1/src/StorageBytes.bend as StorageBytes
import Base

8def utf8.lead(+byte: U32, +out: String) -> Utf8State:
9  Utf8State{
10    Bool.pick(U32,
11      U32.is_lt(byte, 128), 0,
12      Bool.pick(U32, U32.is_le(194, byte) && U32.is_le(byte, 223), 1,
13        Bool.pick(U32, U32.is_eq(byte, 224) || U32.is_le(225, byte) && U32.is_le(byte, 236) || U32.is_le(238, byte) && U32.is_le(byte, 239) || U32.is_eq(byte, 237), 2,
14          Bool.pick(U32, U32.is_le(240, byte) && U32.is_le(byte, 244), 3, 0)))),
15    Bool.pick(U32, U32.is_eq(byte, 224), 160,
16      Bool.pick(U32, U32.is_eq(byte, 240), 144, 128)),
17    Bool.pick(U32, U32.is_eq(byte, 237), 159,
18      Bool.pick(U32, U32.is_eq(byte, 244), 143, 191)),
19    Bool.pick(U32,
20      U32.is_lt(byte, 128), byte,
21      Bool.pick(U32, U32.is_le(194, byte) && U32.is_le(byte, 223), U32.and(byte, 31),
22        Bool.pick(U32, U32.is_le(224, byte) && U32.is_le(byte, 239), U32.and(byte, 15),
23          Bool.pick(U32, U32.is_le(240, byte) && U32.is_le(byte, 244), U32.and(byte, 7), 0)))),
24    Bool.pick(String, U32.is_lt(byte, 128), SCon{Chr{byte}, out}, out),
25    U32.is_lt(byte, 128) || U32.is_le(194, byte) && U32.is_le(byte, 244)
26  }

Uses (11)

Used by (1)