Skip to content

Commit

Permalink
Adjust whitespace according to style guide and error out on unsupport…
Browse files Browse the repository at this point in the history
…ed AA keys in JSON (de)serialization.
  • Loading branch information
s-ludwig committed Oct 3, 2013
1 parent f1c239e commit f18e76b
Showing 1 changed file with 53 additions and 53 deletions.
106 changes: 53 additions & 53 deletions source/vibe/data/json.d
Original file line number Diff line number Diff line change
Expand Up @@ -883,58 +883,58 @@ unittest {
Json serializeToJson(T)(T value)
{
alias Unqual!T TU;
static if( is(TU == Json) ) return value;
else static if( is(TU == typeof(null)) ) return Json(null);
else static if( is(TU == bool) ) return Json(value);
else static if( is(TU == float) ) return Json(cast(double)value);
else static if( is(TU == double) ) return Json(value);
else static if( is(TU == DateTime) ) return Json(value.toISOExtString());
else static if( is(TU == SysTime) ) return Json(value.toISOExtString());
else static if( is(TU : long) ) return Json(cast(long)value);
else static if( is(TU : string) ) return Json(value);
else static if( isArray!T ){
static if (is(TU == Json)) return value;
else static if (is(TU == typeof(null))) return Json(null);
else static if (is(TU == bool)) return Json(value);
else static if (is(TU == float)) return Json(cast(double)value);
else static if (is(TU == double)) return Json(value);
else static if (is(TU == DateTime)) return Json(value.toISOExtString());
else static if (is(TU == SysTime)) return Json(value.toISOExtString());
else static if (is(TU : long)) return Json(cast(long)value);
else static if (is(TU : string)) return Json(value);
else static if (isArray!T) {
auto ret = new Json[value.length];
foreach( i; 0 .. value.length )
foreach (i; 0 .. value.length)
ret[i] = serializeToJson(value[i]);
return Json(ret);
} else static if( isAssociativeArray!TU ){
} else static if (isAssociativeArray!TU) {
Json[string] ret;
alias KeyType!T TK;
foreach( key, value; value ) {
static if(is(TK == string)) {
foreach (key, value; value) {
static if(is(TK == string)) {
ret[key] = serializeToJson(value);
} else static if(is(TK == enum)) {
} else static if (is(TK == enum)) {
ret[to!string(key)] = serializeToJson(value);
} else static if(isStringSerializable!(TK)) {
} else static if (isStringSerializable!(TK)) {
ret[key.toString()] = serializeToJson(value);
}
} else static assert("AA key type %s not supported for JSON serialization.");
}
return Json(ret);
} else static if(isJsonSerializable!TU) {
} else static if (isJsonSerializable!TU) {
return value.toJson();
} else static if(isStringSerializable!TU) {
} else static if (isStringSerializable!TU) {
return Json(value.toString());
} else static if(is(TU == struct)) {
} else static if (is(TU == struct)) {
Json[string] ret;
foreach( m; __traits(allMembers, T) ){
static if( isRWField!(TU, m) ){
foreach (m; __traits(allMembers, T)) {
static if (isRWField!(TU, m)) {
auto mv = __traits(getMember, value, m);
ret[underscoreStrip(m)] = serializeToJson(mv);
}
}
return Json(ret);
} else static if(is(TU == class)) {
if( value is null ) return Json(null);
if (value is null) return Json(null);
Json[string] ret;
foreach( m; __traits(allMembers, T) ){
static if( isRWField!(TU, m) ){
foreach (m; __traits(allMembers, T)) {
static if (isRWField!(TU, m)) {
auto mv = __traits(getMember, value, m);
ret[underscoreStrip(m)] = serializeToJson(mv);
}
}
return Json(ret);
} else static if( isPointer!TU ){
if( value is null ) return Json(null);
} else static if (isPointer!TU) {
if (value is null) return Json(null);
return serializeToJson(*value);
} else {
static assert(false, "Unsupported type '"~T.stringof~"' for JSON serialization.");
Expand All @@ -954,61 +954,61 @@ void deserializeJson(T)(ref T dst, Json src)
/// ditto
T deserializeJson(T)(Json src)
{
static if( is(T == Json) ) return src;
else static if( is(T == typeof(null)) ){ return null; }
else static if( is(T == bool) ) return src.get!bool;
else static if( is(T == float) ) return src.to!float; // since doubles are frequently serialized without
else static if( is(T == double) ) return src.to!double; // a decimal point, we allow conversions here
else static if( is(T == DateTime) ) return DateTime.fromISOExtString(src.get!string);
else static if( is(T == SysTime) ) return SysTime.fromISOExtString(src.get!string);
else static if( is(T : long) ) return cast(T)src.get!long;
else static if( is(T : string) ) return cast(T)src.get!string;
else static if( isArray!T ){
static if (is(T == Json)) return src;
else static if (is(T == typeof(null))) { return null; }
else static if (is(T == bool)) return src.get!bool;
else static if (is(T == float)) return src.to!float; // since doubles are frequently serialized without
else static if (is(T == double)) return src.to!double; // a decimal point, we allow conversions here
else static if (is(T == DateTime)) return DateTime.fromISOExtString(src.get!string);
else static if (is(T == SysTime)) return SysTime.fromISOExtString(src.get!string);
else static if (is(T : long)) return cast(T)src.get!long;
else static if (is(T : string)) return cast(T)src.get!string;
else static if (isArray!T) {
alias typeof(T.init[0]) TV;
auto dst = new Unqual!TV[src.length];
foreach( size_t i, v; src )
foreach (size_t i, v; src)
dst[i] = deserializeJson!(Unqual!TV)(v);
return dst;
} else static if( isAssociativeArray!T ){
} else static if (isAssociativeArray!T) {
alias typeof(T.init.values[0]) TV;
alias KeyType!T TK;
Unqual!TV[TK] dst;
foreach( string key, value; src ) {
static if(is(TK == string)) {
foreach (string key, value; src) {
static if (is(TK == string)) {
dst[key] = deserializeJson!(Unqual!TV)(value);
} else static if(is(TK == enum)) {
} else static if (is(TK == enum)) {
dst[to!(TK)(key)] = deserializeJson!(Unqual!TV)(value);
} else static if(isStringSerializable!TK) {
} else static if (isStringSerializable!TK) {
auto dsk = TK.fromString(key);
dst[dsk] = deserializeJson!(Unqual!TV)(value);
}
} else static assert("AA key type %s not supported for JSON serialization.");
}
return dst;
} else static if (isJsonSerializable!T) {
return T.fromJson(src);
} else static if (isStringSerializable!T) {
return T.fromString(src.get!string);
} else static if( is(T == struct) ){
} else static if (is(T == struct)) {
T dst;
foreach( m; __traits(allMembers, T) ){
static if( isRWPlainField!(T, m) || isRWField!(T, m) ){
foreach (m; __traits(allMembers, T)) {
static if (isRWPlainField!(T, m) || isRWField!(T, m)) {
alias typeof(__traits(getMember, dst, m)) TM;
__traits(getMember, dst, m) = deserializeJson!TM(src[underscoreStrip(m)]);
}
}
return dst;
} else static if( is(T == class) ){
if( src.type == Json.Type.null_ ) return null;
} else static if (is(T == class)) {
if (src.type == Json.Type.null_) return null;
auto dst = new T;
foreach( m; __traits(allMembers, T) ){
static if( isRWPlainField!(T, m) || isRWField!(T, m) ){
foreach (m; __traits(allMembers, T)) {
static if (isRWPlainField!(T, m) || isRWField!(T, m)) {
alias typeof(__traits(getMember, dst, m)) TM;
__traits(getMember, dst, m) = deserializeJson!TM(src[underscoreStrip(m)]);
}
}
return dst;
} else static if( isPointer!T ){
if( src.type == Json.Type.null_ ) return null;
} else static if (isPointer!T) {
if (src.type == Json.Type.null_) return null;
alias typeof(*T.init) TD;
dst = new TD;
*dst = deserializeJson!TD(src);
Expand Down

0 comments on commit f18e76b

Please sign in to comment.