~/bend-docscommunity

json.bend relies on unsafe/foreign

raw source on the hub · import 0xda09635d9d188749939d77eb0a5769b8/json.bend as Json

SPDX-License-Identifier: Apache-2.0 JSON ==== Adapted from H4ad/bend-stdlib/packages/bend-json/json.bend (Apache-2.0; see LICENSE). Packaged separately, without byte wrappers; Unicode decoding, checked encoding, and linear output accumulation replace the originals.

1 import
import Base

Types

type JSON source · line 10 · raw

Data

type JSON.Job source · line 217 · raw

Data

type JSON.NSt source · line 335 · raw

Data

type JSON.Need source · line 345 · raw

Data

type JSON.Frame source · line 352 · raw

Data

type JSON.Mode source · line 357 · raw

Data

type JSON.Walk source · line 365 · raw

Data

Definitions

def JSON.is_ws source · line 22 · raw

@c:Char -> Bool

def JSON.is_digit source · line 28 · raw

@+c:Char -> Bool

def JSON.is_zero source · line 31 · raw

@c:Char -> Bool

def JSON.is_minus source · line 36 · raw

@c:Char -> Bool

def JSON.is_plus source · line 41 · raw

@c:Char -> Bool

def JSON.is_dot source · line 46 · raw

@c:Char -> Bool

def JSON.is_e source · line 51 · raw

@c:Char -> Bool

def JSON.is_quote source · line 56 · raw

@c:Char -> Bool

def JSON.is_slash source · line 61 · raw

@c:Char -> Bool

def JSON.is_lbrk source · line 66 · raw

@c:Char -> Bool

def JSON.is_rbrk source · line 71 · raw

@c:Char -> Bool

def JSON.is_lbra source · line 76 · raw

@c:Char -> Bool

def JSON.is_rbra source · line 81 · raw

@c:Char -> Bool

def JSON.is_comma source · line 86 · raw

@c:Char -> Bool

def JSON.is_colon source · line 91 · raw

@c:Char -> Bool

def JSON.is_ctl source · line 96 · raw

@c:Char -> Bool

def JSON.hex.lo source · line 101 · raw

@+code:U32 -> @d:Bool -> Maybe<&2, U32>

def JSON.hex.up source · line 108 · raw

@+code:U32 -> @a:Bool -> Maybe<&2, U32>

def JSON.hex.low source · line 115 · raw

@+code:U32 -> @a:Bool -> Maybe<&2, U32>

def JSON.hex.val source · line 122 · raw

@c:Char -> Maybe<&2, U32>

def JSON.null source · line 130 · raw

JSON

def JSON.boolean source · line 133 · raw

@ok:Bool -> JSON

def JSON.num source · line 136 · raw

@+n:U32 -> JSON

def JSON.str source · line 139 · raw

@s:String -> JSON

def JSON.array source · line 142 · raw

@xs:List<&2, JSON> -> JSON

def JSON.object source · line 145 · raw

@fs:List<&2, JSON> -> JSON

def JSON.hex.nib.if source · line 151 · raw

@+d:U32 -> @small:Bool -> Char

def JSON.hex.nib source · line 158 · raw

@+d:U32 -> Char

def JSON.hex.pair source · line 161 · raw

@+n:U32 -> String

def JSON.esc.one source · line 164 · raw

@+c:Char -> @q:Bool -> @sl:Bool -> @n:Bool -> @r:Bool -> @t:Bool -> @b:Bool -> @f:Bool -> @ctl:Bool -> String

def JSON.esc.chr source · line 200 · raw

@+c:Char -> String

def JSON.esc.go source · line 207 · raw

@s:String -> @acc:String -> String

def JSON.esc source · line 214 · raw

@s:String -> String

def JSON.write source · line 329 · raw

@v:JSON -> Result<&1, &1, Pair(U32, String), String>

def JSON.fail source · line 368 · raw

@+pos:U32 -> @msg:String -> JSON.Walk

def JSON.nst.start source · line 371 · raw

@minus:Bool -> @zero:Bool -> JSON.NSt

def JSON.nst.can_end source · line 382 · raw

@st:JSON.NSt -> Bool

def JSON.nst.cont source · line 401 · raw

@st:JSON.NSt -> @+c:Char -> Bool

def JSON.nst.after_minus source · line 420 · raw

@+c:Char -> @zero:Bool -> JSON.NSt

def JSON.nst.after_zero source · line 427 · raw

@+c:Char -> @dot:Bool -> JSON.NSt

def JSON.nst.after_int source · line 434 · raw

@+c:Char -> @digit:Bool -> @dot:Bool -> JSON.NSt

def JSON.nst.after_frac source · line 445 · raw

@+c:Char -> @digit:Bool -> JSON.NSt

def JSON.nst.after_e source · line 452 · raw

@+c:Char -> @digit:Bool -> JSON.NSt

def JSON.nst.next source · line 459 · raw

@st:JSON.NSt -> @+c:Char -> JSON.NSt

def JSON.put.frame source · line 478 · raw

@+pos:U32 -> @h:JSON.Frame -> @rest:List<&2, JSON.Frame> -> @v:JSON -> JSON.Walk

def JSON.put source · line 487 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @v:JSON -> JSON.Walk

def JSON.close.arr.frame source · line 494 · raw

@+pos:U32 -> @h:JSON.Frame -> @rest:List<&2, JSON.Frame> -> JSON.Walk

def JSON.close.arr source · line 503 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> JSON.Walk

def JSON.close.obj.frame source · line 510 · raw

@+pos:U32 -> @h:JSON.Frame -> @rest:List<&2, JSON.Frame> -> JSON.Walk

def JSON.close.obj source · line 519 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> JSON.Walk

def JSON.arr.empty.rev source · line 526 · raw

@+pos:U32 -> @rev:List<&2, JSON> -> @rest:List<&2, JSON.Frame> -> JSON.Walk

def JSON.arr.empty.frame source · line 534 · raw

@+pos:U32 -> @h:JSON.Frame -> @rest:List<&2, JSON.Frame> -> JSON.Walk

def JSON.arr.empty source · line 543 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> JSON.Walk

def JSON.obj.empty.rev source · line 550 · raw

@+pos:U32 -> @rev:List<&2, JSON> -> @rest:List<&2, JSON.Frame> -> JSON.Walk

def JSON.obj.empty.frame source · line 558 · raw

@+pos:U32 -> @h:JSON.Frame -> @rest:List<&2, JSON.Frame> -> JSON.Walk

def JSON.obj.empty source · line 567 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> JSON.Walk

def JSON.after.comma.frame source · line 574 · raw

@+pos:U32 -> @h:JSON.Frame -> @rest:List<&2, JSON.Frame> -> JSON.Walk

def JSON.after.comma source · line 583 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> JSON.Walk

def JSON.str.end_key.frame source · line 590 · raw

@+pos:U32 -> @h:JSON.Frame -> @rest:List<&2, JSON.Frame> -> @key:String -> JSON.Walk

def JSON.str.end_key source · line 600 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @key:String -> JSON.Walk

def JSON.str.end source · line 607 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @text:String -> @as_key:Bool -> JSON.Walk

def JSON.esc.char source · line 615 · raw

@+c:Char -> @q:Bool -> @sl:Bool -> @sls:Bool -> @n:Bool -> @r:Bool -> @t:Bool -> @b:Bool -> @f:Bool -> @u:Bool -> Maybe<&2, Char>

def JSON.esc.read source · line 655 · raw

@+c:Char -> Maybe<&2, Char>

def JSON.esc.is_u source · line 663 · raw

@c:Char -> Bool

def JSON.is_high source · line 668 · raw

@+code:U32 -> Bool

def JSON.is_low source · line 671 · raw

@+code:U32 -> Bool

def JSON.is_scalar source · line 674 · raw

@+code:U32 -> Bool

def JSON.hex.combine source · line 678 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @rev:String -> @as_key:Bool -> @high:U32 -> @low:U32 -> @valid:Bool -> JSON.Walk

def JSON.hex.first source · line 688 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @rev:String -> @as_key:Bool -> @code:U32 -> @low:Bool -> @high:Bool -> JSON.Walk

def JSON.hex.scalar.branch source · line 700 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @rev:String -> @as_key:Bool -> @high:U32 -> @+code:U32 -> @zero:Bool -> JSON.Walk

def JSON.hex.scalar source · line 709 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @rev:String -> @as_key:Bool -> @+high:U32 -> @code:U32 -> JSON.Walk

def JSON.hex.push source · line 713 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @+esc:Bool -> @+hex:U32 -> @+hexv:U32 -> @rev:String -> @as_key:Bool -> @high:U32 -> @d:U32 -> @last:Bool -> JSON.Walk

def JSON.hex.got source · line 723 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @esc:Bool -> @+hex:U32 -> @+hexv:U32 -> @rev:String -> @as_key:Bool -> @high:U32 -> @mb:Maybe<&2, U32> -> JSON.Walk

def JSON.str.esc.other source · line 733 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @rev:String -> @as_key:Bool -> @high:U32 -> @zero:Bool -> @mb:Maybe<&2, Char> -> JSON.Walk

def JSON.str.esc source · line 745 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @rev:String -> @as_key:Bool -> @+high:U32 -> @+c:Char -> @u:Bool -> @mb:Maybe<&2, Char> -> JSON.Walk

def JSON.str.body.scalar source · line 754 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @rev:String -> @as_key:Bool -> @c:Char -> @valid:Bool -> JSON.Walk

def JSON.str.body.normal source · line 762 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @rev:String -> @as_key:Bool -> @+c:Char -> @quote:Bool -> @slash:Bool -> @ctl:Bool -> JSON.Walk

def JSON.str.body.pending source · line 779 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @rev:String -> @as_key:Bool -> @high:U32 -> @zero:Bool -> @c:Char -> @quote:Bool -> @slash:Bool -> @ctl:Bool -> JSON.Walk

def JSON.str.body source · line 792 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @rev:String -> @as_key:Bool -> @+high:U32 -> @c:Char -> @quote:Bool -> @slash:Bool -> @ctl:Bool -> JSON.Walk

def JSON.step.str.hex source · line 798 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @+hex:U32 -> @+hexv:U32 -> @rev:String -> @as_key:Bool -> @high:U32 -> @+c:Char -> @in_hex:Bool -> JSON.Walk

def JSON.step.str source · line 809 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @esc:Bool -> @+hex:U32 -> @+hexv:U32 -> @rev:String -> @as_key:Bool -> @high:U32 -> @+c:Char -> @in_hex:Bool -> JSON.Walk

def JSON.step.lit.last source · line 819 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @rest:String -> @v:JSON -> @last:Bool -> JSON.Walk

def JSON.step.lit.ok source · line 827 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @+rest:String -> @v:JSON -> @ok:Bool -> JSON.Walk

def JSON.step.lit source · line 835 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @want:String -> @v:JSON -> @+c:Char -> JSON.Walk

def JSON.is_t source · line 843 · raw

@c:Char -> Bool

def JSON.is_f source · line 848 · raw

@c:Char -> Bool

def JSON.is_n source · line 853 · raw

@c:Char -> Bool

def JSON.is_num.hd source · line 858 · raw

@+c:Char -> Bool

def JSON.val.start_num source · line 861 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @+c:Char -> JSON.Walk

def JSON.val.start_str source · line 864 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @as_key:Bool -> JSON.Walk

def JSON.val.lit source · line 867 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @+c:Char -> @t:Bool -> @f:Bool -> @n:Bool -> JSON.Walk

def JSON.val.open source · line 883 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @+c:Char -> @arr:Bool -> @obj:Bool -> @quote:Bool -> @num:Bool -> JSON.Walk

def JSON.step.val source · line 903 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @+c:Char -> @ws:Bool -> @rbrk:Bool -> JSON.Walk

def JSON.step.key source · line 916 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @+c:Char -> @ws:Bool -> @rbra:Bool -> @quote:Bool -> JSON.Walk

def JSON.step.colon source · line 932 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @+c:Char -> @ws:Bool -> @col:Bool -> JSON.Walk

def JSON.step.after source · line 944 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @+c:Char -> @ws:Bool -> @comma:Bool -> @rbrk:Bool -> @rbra:Bool -> JSON.Walk

def JSON.step.end source · line 964 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @v:JSON -> @+c:Char -> @ws:Bool -> JSON.Walk

def JSON.step.need source · line 972 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @need:JSON.Need -> @+c:Char -> JSON.Walk

def JSON.step.num.end.mode source · line 985 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @mode:JSON.Mode -> @c:Char -> JSON.Walk

def JSON.step.num.end source · line 1001 · raw

@+pos:U32 -> @w:JSON.Walk -> @c:Char -> JSON.Walk

def JSON.step.num source · line 1006 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @+rev:String -> @st:JSON.NSt -> @+c:Char -> @cont:Bool -> JSON.Walk

def JSON.step.mode source · line 1014 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @mode:JSON.Mode -> @+c:Char -> JSON.Walk

def JSON.step source · line 1029 · raw

@w:JSON.Walk -> @c:Char -> @pos:U32 -> JSON.Walk

def JSON.mode.stop source · line 1034 · raw

@mode:JSON.Mode -> Bool

def JSON.walk.stop source · line 1049 · raw

@w:JSON.Walk -> Bool

def JSON.eof.need source · line 1054 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @need:JSON.Need -> JSON.Mode

def JSON.eof.put source · line 1067 · raw

@+pos:U32 -> @w:JSON.Walk -> JSON.Mode

def JSON.eof.num source · line 1084 · raw

@+pos:U32 -> @stk:List<&2, JSON.Frame> -> @rev:String -> @ok:Bool -> JSON.Mode

def JSON.parse.eof source · line 1091 · raw

@+pos:U32 -> @w:JSON.Walk -> JSON.Mode

def JSON.parse.go source · line 1108 · raw

@s:String -> @+pos:U32 -> @w:JSON.Walk -> @halt:Bool -> JSON.Mode

def JSON.parse.fin source · line 1120 · raw

@mode:JSON.Mode -> Result<&1, &1, Pair(U32, String), JSON>

def JSON.read source · line 1135 · raw

@s:String -> Result<&1, &1, Pair(U32, String), JSON>

Unsafe

unsafe JSON.encode.go source · line 226 · raw

@jobs:List<&2, JSON.Job> -> @acc:List<&2, String> -> Result<&1, &1, Pair(U32, String), String>

unsafe JSON.encode.number source · line 306 · raw

@parsed:Result<&1, &1, Pair(U32, String), JSON> -> @rest:List<&2, JSON.Job> -> @lex:String -> @acc:List<&2, String> -> Result<&1, &1, Pair(U32, String), String>