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())))

Uses (15)

Used by (2)