Skip to content

Commit

Permalink
Add parseObjectWithoutSkip and parseObjectSkipNullFields
Browse files Browse the repository at this point in the history
  • Loading branch information
jangko committed Jan 17, 2024
1 parent 8fcd33d commit 52b17cd
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,8 @@ parseValue(r: var JsonReader, val: var JsonValueRef)
parseArray(r: var JsonReader; body: untyped)
parseArray(r: var JsonReader; idx: untyped; body: untyped)
parseObject(r: var JsonReader, key: untyped, body: untyped)
parseObjectWithoutSkip(r: var JsonReader, key: untyped, body: untyped)
parseObjectSkipNullFields(r: var JsonReader, key: untyped, body: untyped)
parseObjectCustomKey(r: var JsonReader, keyAction: untyped, body: untyped)
parseJsonNode(r: var JsonReader): JsonNode
skipSingleJsValue(r: var JsonReader)
Expand Down
26 changes: 26 additions & 0 deletions json_serialization/parser.nim
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,32 @@ template parseObject*(r: var JsonReader, key: untyped, body: untyped) =
do: # error action
r.raiseParserError()

template parseObjectWithoutSkip*(r: var JsonReader, key: untyped, body: untyped) =
if r.tokKind != JsonValueKind.Object:
r.raiseParserError(errCurlyLeExpected)
parseObjectImpl(r.lex, false): discard # initial action
do: discard # closing action
do: discard # comma action
do: # key action
let key {.inject.} = r.parseString()
do: # value action
body
do: # error action
r.raiseParserError()

template parseObjectSkipNullFields*(r: var JsonReader, key: untyped, body: untyped) =
if r.tokKind != JsonValueKind.Object:
r.raiseParserError(errCurlyLeExpected)
parseObjectImpl(r.lex, true): discard # initial action
do: discard # closing action
do: discard # comma action
do: # key action
let key {.inject.} = r.parseString()
do: # value action
body
do: # error action
r.raiseParserError()

template parseObjectCustomKey*(r: var JsonReader, keyAction: untyped, body: untyped) =
mixin flavorSkipNullFields
type
Expand Down

0 comments on commit 52b17cd

Please sign in to comment.