def digit.of

emerging-ezhttp@0.21.0.0 · src/unescape.bend:33

import emerging-ezhttp@0.21.0.0/src/unescape.bend as Unescape
import Base

33# a digit's value in a base (16 or 10), or 16 when it is not one
34def digit.of(hex: Bool, +cp: U32) -> U32:
35  match hex:
36    case True{}:
37      Bool.pick(U32, Bool.and(U32.is_le(48, cp), U32.is_le(cp, 57)),
38        U32.sub(cp, 48),
39        Bool.pick(U32, Bool.and(U32.is_le(65, cp), U32.is_le(cp, 70)),
40          U32.sub(cp, 55),
41          Bool.pick(U32, Bool.and(U32.is_le(97, cp), U32.is_le(cp, 102)),
42            U32.sub(cp, 87), 16)))
43    case False{}:
44      Bool.pick(U32, Bool.and(U32.is_le(48, cp), U32.is_le(cp, 57)),
45        U32.sub(cp, 48), 16)

Uses (6)

Used by (1)