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
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})))