/// <summary>
/// Executes a mapping from the script type to a host type
/// </summary>
/// <param name="value">The source value</param>
/// <returns>The mapped value</returns>
private static object MapToHostType(JavaScriptValue value)
{
JavaScriptValueType valueType = value.ValueType;
JavaScriptValue processedValue;
object result;
switch (valueType)
{
case JavaScriptValueType.Null:
result = null;
break;
case JavaScriptValueType.Undefined:
result = Undefined.Value;
break;
case JavaScriptValueType.Boolean:
processedValue = value.ConvertToBoolean();
result = processedValue.ToBoolean();
break;
case JavaScriptValueType.Number:
processedValue = value.ConvertToNumber();
result = processedValue.ToDouble();
break;
case JavaScriptValueType.String:
processedValue = value.ConvertToString();
result = processedValue.ToString();
break;
case JavaScriptValueType.Object:
case JavaScriptValueType.Function:
case JavaScriptValueType.Error:
case JavaScriptValueType.Array:
processedValue = value.ConvertToObject();
result = processedValue.ToObject();
break;
default:
throw new ArgumentOutOfRangeException();
}
return(result);
}