git std.json, use version=new_std_json for now

This commit is contained in:
Adam D. Ruppe 2013-12-02 12:30:05 -05:00
parent 88c19d7355
commit 18e5719db2
1 changed files with 57 additions and 20 deletions

45
jsvar.d
View File

@ -1115,12 +1115,26 @@ struct var {
JSONValue val; JSONValue val;
final switch(payloadType()) { final switch(payloadType()) {
case Type.Boolean: case Type.Boolean:
version(new_std_json)
val = this._payload._boolean;
else {
if(this._payload._boolean) if(this._payload._boolean)
val.type = JSON_TYPE.TRUE; val.type = JSON_TYPE.TRUE;
else else
val.type = JSON_TYPE.FALSE; val.type = JSON_TYPE.FALSE;
}
break; break;
case Type.Object: case Type.Object:
version(new_std_json) {
if(_payload._object is null) {
val = null;
} else {
JSONValue[string] tmp;
foreach(k, v; _payload._object._properties)
tmp[k] = v.toJsonValue();
val = tmp;
}
} else {
if(_payload._object is null) { if(_payload._object is null) {
val.type = JSON_TYPE.NULL; val.type = JSON_TYPE.NULL;
} else { } else {
@ -1128,29 +1142,45 @@ struct var {
foreach(k, v; _payload._object._properties) foreach(k, v; _payload._object._properties)
val.object[k] = v.toJsonValue(); val.object[k] = v.toJsonValue();
} }
}
break; break;
case Type.String: case Type.String:
version(new_std_json) { } else {
val.type = JSON_TYPE.STRING; val.type = JSON_TYPE.STRING;
}
val.str = _payload._string; val.str = _payload._string;
break; break;
case Type.Integral: case Type.Integral:
version(new_std_json) { } else {
val.type = JSON_TYPE.INTEGER; val.type = JSON_TYPE.INTEGER;
}
val.integer = _payload._integral; val.integer = _payload._integral;
break; break;
case Type.Floating: case Type.Floating:
version(new_std_json) { } else {
val.type = JSON_TYPE.FLOAT; val.type = JSON_TYPE.FLOAT;
}
val.floating = _payload._floating; val.floating = _payload._floating;
break; break;
case Type.Array: case Type.Array:
val.type = JSON_TYPE.ARRAY;
auto a = _payload._array; auto a = _payload._array;
val.array.length = a.length; JSONValue[] tmp;
tmp.length = a.length;
foreach(i, v; a) { foreach(i, v; a) {
val.array[i] = v.toJsonValue(); tmp[i] = v.toJsonValue();
}
version(new_std_json) {
val = tmp;
} else {
val.type = JSON_TYPE.ARRAY;
val.array = tmp;
} }
break; break;
case Type.Function: case Type.Function:
version(new_std_json)
val = null;
else
val.type = JSON_TYPE.NULL; // ideally we would just skip it entirely... val.type = JSON_TYPE.NULL; // ideally we would just skip it entirely...
break; break;
} }
@ -1304,9 +1334,16 @@ class PrototypeObject {
} }
JSONValue val; JSONValue val;
version(new_std_json) {
JSONValue[string] tmp;
foreach(k, v; this._properties)
tmp[k] = v.toJsonValue();
val.object = tmp;
} else {
val.type = JSON_TYPE.OBJECT; val.type = JSON_TYPE.OBJECT;
foreach(k, v; this._properties) foreach(k, v; this._properties)
val.object[k] = v.toJsonValue(); val.object[k] = v.toJsonValue();
}
return toJSON(&val); return toJSON(&val);
} }