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
NullJSON
Boolean@ok:Bool -> JSON
Num@lex:String -> JSON
Str@text:String -> JSON
Arr@items:List<&2, JSON> -> JSON
Obj@fields:List<&2, JSON> -> JSON
Member@name:String -> @value:JSON -> JSON
type JSON.Job source · line 217 · raw
Data
JLit@s:String -> JSON.Job
JVal@v:JSON -> JSON.Job
JArr0@xs:List<&2, JSON> -> JSON.Job
JArr1@xs:List<&2, JSON> -> JSON.Job
JObj0@fs:List<&2, JSON> -> JSON.Job
JObj1@fs:List<&2, JSON> -> JSON.Job
type JSON.NSt source · line 335 · raw
Data
NMinusJSON.NSt
NZeroJSON.NSt
NIntJSON.NSt
NDotJSON.NSt
NFracJSON.NSt
NEJSON.NSt
NESignJSON.NSt
NExpJSON.NSt
type JSON.Need source · line 345 · raw
Data
NValJSON.Need
NKeyJSON.Need
NColonJSON.Need
NAfterJSON.Need
NEnd@v:JSON -> JSON.Need
type JSON.Frame source · line 352 · raw
Data
FArr@rev:List<&2, JSON> -> JSON.Frame
FObj@rev:List<&2, JSON> -> JSON.Frame
FKey@rev:List<&2, JSON> -> @key:String -> JSON.Frame
type JSON.Mode source · line 357 · raw
Data
MNeed@need:JSON.Need -> JSON.Mode
MStr@esc:Bool -> @hex:U32 -> @hexv:U32 -> @rev:String -> @as_key:Bool -> @hi:U32 -> JSON.Mode
MNum@rev:String -> @st:JSON.NSt -> JSON.Mode
MLit@want:String -> @v:JSON -> JSON.Mode
MFail@pos:U32 -> @msg:String -> JSON.Mode
MDone@v:JSON -> JSON.Mode
type JSON.Walk source · line 365 · raw
Data
Walk@mode:JSON.Mode -> @stk:List<&2, JSON.Frame> -> JSON.Walk
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>