private static JsInstance ToJsInstance(IGlobal global, RavenJToken value)
{
switch (value.Type)
{
case JTokenType.Array:
return ToJsArray(global, (RavenJArray)value);
case JTokenType.Object:
return ToJsObject(global, (RavenJObject)value);
case JTokenType.Null:
return JsNull.Instance;
case JTokenType.Boolean:
var boolVal = ((RavenJValue)value);
return global.BooleanClass.New((bool)boolVal.Value);
case JTokenType.Float:
var fltVal = ((RavenJValue)value);
if (fltVal.Value is float)
return new JsNumber((float)fltVal.Value, global.NumberClass);
if (fltVal.Value is decimal)
return global.NumberClass.New((double)(decimal)fltVal.Value);
return global.NumberClass.New((double)fltVal.Value);
case JTokenType.Integer:
var intVal = ((RavenJValue)value);
if (intVal.Value is int)
{
return global.NumberClass.New((int)intVal.Value);
}
return global.NumberClass.New((long)intVal.Value);
case JTokenType.Date:
var dtVal = ((RavenJValue)value);
return global.DateClass.New((DateTime)dtVal.Value);
case JTokenType.String:
var strVal = ((RavenJValue)value);
return global.StringClass.New((string)strVal.Value);
default:
throw new NotSupportedException(value.Type.ToString());
}
}