def canonical
bendvy-ecs-core@0.1.0.3 · decode_data.bend:198
import bendvy-ecs-core@0.1.0.3/decode_data.bend as DecodeData
import Base
198def canonical(fuel:Nat,codec:Codec,raw:Raw) -> Raw:
199 match fuel codec raw:
200 case 0n _ raw: raw
201 case 1n+more Nullable{inner} Null{}: Null{}
202 case 1n+more Nullable{inner} raw: canonical(more,inner,raw)
203 case 1n+more ArrayValue{_} Array{[]}: Array{[]}
204 case 1n++more ArrayValue{+inner} Array{head <> tail}: canonical_array_join(canonical(more,inner,head),canonical(more,ArrayValue{inner},Array{tail}))
205 case 1n+more Struct{[]} Object{_}: Object{[]}
206 case 1n++more Struct{NamedCodec{+name,codec} <> rest} Object{+values}: canonical_struct_join(name,canonical(more,codec,field(name,values)),canonical(more,Struct{rest},Object{values}))
207 case _ _ raw: raw