def enc
bend-kit-redis@0.3.0.0 · redis.bend:174
import bend-kit-redis@0.3.0.0/redis.bend as Redis
import Base
import bend-kit-bytes@0.3.3.0/bytes.bend as Bytes
174def enc(xs: List<&1, Val>, st: E) -> E:
175 match xs:
176 case Nil{}:
177 st
178 case Con{Simple{t}, rest}:
179 enc(rest, line(st, "+", clean(t)))
180 case Con{Error{t}, rest}:
181 enc(rest, line(st, "-", clean(t)))
182 case Con{Int{+hi, +lo}, rest}:
183 enc(rest, put(st, ":" ++ i64.show(hi, lo), Bytes.new(0), True{}))
184 case Con{Bulk{d}, rest}:
185 enc(rest, blob(st, "$", d))
186 case Con{Arr{items}, rest}:
187 enc(rest, agg(st, 0, enc(items, fresh())))
188 case Con{Null{}, rest}:
189 enc(rest, put(st, "_", Bytes.new(0), True{}))
190 case Con{Boolean{v}, rest}:
191 enc(rest, put(st, "#" ++ boolean(v), Bytes.new(0), True{}))
192 case Con{Double{t}, rest}:
193 enc(rest, line(st, ",", clean(t)))
194 case Con{BigNum{t}, rest}:
195 enc(rest, line(st, "(", clean(t)))
196 case Con{BulkError{t}, rest}:
197 enc(rest, blob(st, "!", t))
198 case Con{Verbatim{f, t}, rest}:
199 enc(rest, verbatim(st, f, t))
200 case Con{Dict{items}, rest}:
201 enc(rest, agg(st, 1, enc(items, fresh())))
202 case Con{Set{items}, rest}:
203 enc(rest, agg(st, 2, enc(items, fresh())))
204 case Con{Attr{items}, rest}:
205 enc(rest, agg(st, 3, enc(items, fresh())))
206 case Con{Push{items}, rest}:
207 enc(rest, agg(st, 4, enc(items, fresh())))