reuse jsffi in json module (#17165)
* remove unnecessary when statement * remove outdated codes * reuse jsffi * move js json coverage
This commit is contained in:
parent
e1cc3b83fb
commit
81889fb84c
4 changed files with 17 additions and 23 deletions
|
|
@ -908,15 +908,14 @@ proc parseJson*(s: Stream, filename: string = ""; rawIntegers = false, rawFloats
|
|||
|
||||
when defined(js):
|
||||
from std/math import `mod`
|
||||
type
|
||||
JSObject = object
|
||||
import std/jsffi
|
||||
|
||||
proc parseNativeJson(x: cstring): JSObject {.importc: "JSON.parse".}
|
||||
proc parseNativeJson(x: cstring): JSObject {.importjs: "JSON.parse(#)".}
|
||||
|
||||
proc getVarType(x: JSObject): JsonNodeKind =
|
||||
result = JNull
|
||||
proc getProtoName(y: JSObject): cstring
|
||||
{.importc: "Object.prototype.toString.call".}
|
||||
{.importjs: "Object.prototype.toString.call(#)".}
|
||||
case $getProtoName(x) # TODO: Implicit returns fail here.
|
||||
of "[object Array]": return JArray
|
||||
of "[object Object]": return JObject
|
||||
|
|
@ -936,18 +935,6 @@ when defined(js):
|
|||
`result` = `x`.length;
|
||||
"""
|
||||
|
||||
proc `[]`(x: JSObject, y: string): JSObject =
|
||||
assert x.getVarType == JObject
|
||||
asm """
|
||||
`result` = `x`[`y`];
|
||||
"""
|
||||
|
||||
proc `[]`(x: JSObject, y: int): JSObject =
|
||||
assert x.getVarType == JArray
|
||||
asm """
|
||||
`result` = `x`[`y`];
|
||||
"""
|
||||
|
||||
proc convertObject(x: JSObject): JsonNode =
|
||||
case getVarType(x)
|
||||
of JArray:
|
||||
|
|
@ -965,14 +952,14 @@ when defined(js):
|
|||
result[$nimProperty] = nimValue.convertObject()
|
||||
asm "}}"
|
||||
of JInt:
|
||||
result = newJInt(cast[int](x))
|
||||
result = newJInt(x.to(int))
|
||||
of JFloat:
|
||||
result = newJFloat(cast[float](x))
|
||||
result = newJFloat(x.to(float))
|
||||
of JString:
|
||||
# Dunno what to do with isUnquoted here
|
||||
result = newJString($cast[cstring](x))
|
||||
result = newJString($x.to(cstring))
|
||||
of JBool:
|
||||
result = newJBool(cast[bool](x))
|
||||
result = newJBool(x.to(bool))
|
||||
of JNull:
|
||||
result = newJNull()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue