Add items iterator
Iterates over all child items in a Preserve.
This commit is contained in:
parent
be8ad62f99
commit
8985060055
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue