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

Uses (8)

Used by (2)