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# null -> dflt; number or string -> parse(text); anything else is an error.
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}

Uses (7)

Used by (12)