def read.scalar
bendonnect-rpc@0.1.0.0 · src/pbjson.bend:477
import bendonnect-rpc@0.1.0.0/src/pbjson.bend as Pbjson
import Base
import bend-kit-bytes@0.3.2.0/bytes.bend as Bytes
import bend-kit-encoding@0.4.0.0/encoding.bend as Enc
import bend-kit-json@0.6.1.1/json.bend as Json
477
478def read.scalar(~T: Data, ~parse: @+s: String -> Maybe<&2, T>, +dflt: T, +what: String, v: Json.Val) -> Result<&2, &1, String, T>:
479 match v:
480 case Json.Null{}:
481 Done{dflt}
482 case Json.Num{b}:
483 lift.m(T, parse(Bytes.to_string(b)), what)
484 case Json.Str{b}:
485 lift.m(T, parse(Enc.utf8.decode(b)), what)
486 case Json.Flag{on}:
487 Fail{what}
488 case Json.Arr{xs}:
489 Fail{what}
490 case Json.Obj{kvs}:
491 Fail{what}