From 89850600555cc6291ff69e8ae32a164a5b78046d Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Fri, 9 Jul 2021 12:24:18 +0200 Subject: [PATCH] Add items iterator Iterates over all child items in a Preserve. --- src/preserves.nim | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/preserves.nim b/src/preserves.nim index 5488671..7e0fe09 100644 --- a/src/preserves.nim +++ b/src/preserves.nim @@ -224,6 +224,21 @@ proc `$`*(prs: Preserve): string = of pkEmbedded: result.add(prs.embedded.repr) +iterator items*(prs: Preserve): Preserve = + case prs.kind + of pkRecord: + for i in 0..prs.record.high.pred: + yield prs.record[i] + of pkSequence: + for e in prs.sequence.items: yield e + of pkSet: + for e in prs.set.items: yield e + of pkDictionary: + for k, v in prs.dict.pairs: + yield k # key can be an arbitrary Preserve + yield v + else: discard + func isRecord*(prs: Preserve): bool = if prs.kind == pkRecord: result = true