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:
|
of pkEmbedded:
|
||||||
result.add(prs.embedded.repr)
|
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 =
|
func isRecord*(prs: Preserve): bool =
|
||||||
if prs.kind == pkRecord:
|
if prs.kind == pkRecord:
|
||||||
result = true
|
result = true
|
||||||
|
|
Loading…
Reference in New Issue