def assembly_step

qasim-bend-kit@0.1.0.2 · libs/JSON.bend:1165

import qasim-bend-kit@0.1.0.2/libs/JSON.bend as JSON
import Base

1165def assembly_step(state: Assembly, token: Token) -> Assembly:
1166    match state:
1167        case NeedValue{kont}: assembly_value(token, kont)
1168        case ArrayFirst{kont}:
1169            match token:
1170                case Delimiter{']'}: assembly_resume(kont, Arr{Nil{}})
1171                case _: assembly_value(token, InArray{Nil{}, kont})
1172        case ArrayNext{acc, kont}: assembly_value(token, InArray{acc, kont})
1173        case ArrayComma{acc, kont}:
1174            match token:
1175                case Delimiter{','}: ArrayNext{acc, kont}
1176                case Delimiter{']'}: assembly_resume(kont, Arr{List.reverse(&2, Value, acc)})
1177                case _: AssemblyError{}
1178        case ObjectFirst{kont}:
1179            match token:
1180                case Delimiter{'}'}: assembly_resume(kont, Obj{Nil{}})
1181                case _: assembly_key(token, Nil{}, kont)
1182        case ObjectNext{acc, kont}: assembly_key(token, acc, kont)
1183        case NeedColon{key, acc, kont}:
1184            match token:
1185                case Delimiter{':'}: NeedValue{InObject{key, acc, kont}}
1186                case _: AssemblyError{}
1187        case ObjectComma{acc, kont}:
1188            match token:
1189                case Delimiter{','}: ObjectNext{acc, kont}
1190                case Delimiter{'}'}: assembly_resume(kont, Obj{List.reverse(&2, Sigma<&2, &2, String, key => Value>, acc)})
1191                case _: AssemblyError{}
1192        case _: AssemblyError{}

Uses (16)

Used by (1)