-
Notifications
You must be signed in to change notification settings - Fork 37
Open
Description
It's probably better to have the API hide s
and i
in
Lines 13 to 22 in d45163b
proc parseHook*[T](s: string, i: var int, v: var seq[T]) | |
proc parseHook*[T: enum](s: string, i: var int, v: var T) | |
proc parseHook*[T: object|ref object](s: string, i: var int, v: var T) | |
proc parseHook*[T](s: string, i: var int, v: var SomeTable[string, T]) | |
proc parseHook*[T](s: string, i: var int, v: var SomeSet[T]) | |
proc parseHook*[T: tuple](s: string, i: var int, v: var T) | |
proc parseHook*[T: array](s: string, i: var int, v: var T) | |
proc parseHook*[T: ref array](s: string, i: var int, v: var T) | |
proc parseHook*(s: string, i: var int, v: var JsonNode) | |
proc parseHook*(s: string, i: var int, v: var char) |
This can be done with a lightweight parser object
type JsonParser = object
view: openarray[char]
pos: int
proc parseHook*[T](p: var JsonParser, v: var seq[T])
proc parseHook*[T: enum](p: var JsonParser, v: var T)
proc parseHook*[T: object|ref object](p: var JsonParser, v: var T)
proc parseHook*[T](p: var JsonParser, v: var SomeTable[string, T])
proc parseHook*[T](p: var JsonParser, v: var SomeSet[T])
proc parseHook*[T: tuple](p: var JsonParser, v: var T)
proc parseHook*[T: array](p: var JsonParser, v: var T)
proc parseHook*[T: ref array](p: var JsonParser, v: var T)
proc parseHook*(p: var JsonParser, v: var JsonNode)
proc parseHook*(p: var JsonParser, v: var char)
The API would be clearer instead of the user asking themself what that i parameter does and whether it was important or not.
It also gives you the ability to evolve the internals to add new functionality like a File field #5 or mmap support for large json files.
artemklevtsov and PhilippMDoerner
Metadata
Metadata
Assignees
Labels
No labels