def q.hex

yaml-for-bend@0.1.1.0 · scan.bend:854

import yaml-for-bend@0.1.1.0/scan.bend as Scan
import Base
import yaml-for-bend@0.1.1.0/token.bend as T

854# \x, \u or \U and +n+ hex digits.
855def q.hex(+n: Nat, +cur: Cur, acc: String, +start: T.Mark) -> Qs:
856  +digits = String.take(String.drop(cur.s(cur), 2n), n)
857  +x = hex.value(digits, 0)
858  Bool.pick(Qs, Bool.not(Bool.and(Nat.is_eq(String.length(digits), n), all.hex(digits))),
859    QsBad{T.Error{"did not find expected hexdecimal number while parsing a quoted scalar", start, T.Syntax{}}},
860    Bool.pick(Qs, Bool.not(is_scalar.value(x)),
861      QsBad{T.Error{"found invalid Unicode character escape code while parsing a quoted scalar", start, T.Syntax{}}},
862      q.text(adv.n(Nat.add(n, 2n), cur), SCon{Chr{x}, acc})))

Uses (22)

Used by (1)