Add mitems and mpairs where it makes sense

This commit is contained in:
def 2015-01-28 02:21:54 +01:00
commit 46cf40c40d
5 changed files with 117 additions and 0 deletions

View file

@ -872,12 +872,26 @@ iterator items*(node: JsonNode): JsonNode =
for i in items(node.elems):
yield i
iterator mitems*(node: var JsonNode): var JsonNode =
## Iterator for the items of `node`. `node` has to be a JArray. Items can be
## modified.
assert node.kind == JArray
for i in mitems(node.elems):
yield i
iterator pairs*(node: JsonNode): tuple[key: string, val: JsonNode] =
## Iterator for the child elements of `node`. `node` has to be a JObject.
assert node.kind == JObject
for key, val in items(node.fields):
yield (key, val)
iterator mpairs*(node: var JsonNode): var tuple[key: string, val: JsonNode] =
## Iterator for the child elements of `node`. `node` has to be a JObject.
## Items can be modified
assert node.kind == JObject
for keyVal in mitems(node.fields):
yield keyVal
proc eat(p: var JsonParser, tok: TTokKind) =
if p.tok == tok: discard getTok(p)
else: raiseParseErr(p, tokToStr[tok])