Skip to content

Commit 3f6b1a2

Browse files
committed
Faster float parser.
1 parent 6cb0553 commit 3f6b1a2

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

src/jsony.nim

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import jsony/objvar, strutils, tables, sets, unicode, json, options
1+
import jsony/objvar, strutils, tables, sets, unicode, json, options, parseutils
22

33
type JsonError* = object of ValueError
44

@@ -119,7 +119,13 @@ proc parseHook*(s: string, i: var int, v: var SomeSignedInt) =
119119

120120
proc parseHook*(s: string, i: var int, v: var SomeFloat) =
121121
## Will parse float32 and float64.
122-
v = type(v)(parseFloat(parseSymbol(s, i)))
122+
var f: float
123+
eatSpace(s, i)
124+
let chars = parseutils.parseFloat(s, f, i)
125+
if chars == 0:
126+
error("Failed to parse a float.", i)
127+
i += chars
128+
v = f
123129

124130
proc parseHook*(s: string, i: var int, v: var string) =
125131
## Parse string.

0 commit comments

Comments
 (0)