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{}