Exemple #1
0
	// HACK snewman 7/26/01: ensure that the type analysis in these methods is
	// complete, e.g. that "value is double" will fire for all numeric values.
	// Might need to add additional tests for 64-bit int, for example.
	
	// Convert the given value to a primitive type.
	public static object ToPrimitive(object value, JObject.ValueHintType hint)
		{
		// If the value is already a JavaScript primitive type, just return it.
		if (JObject.IsPrimitive(value))
			return value;
		
		// Otherwise, convert it to a primitive.
		JObject asObj = value as JObject;
		if (asObj != null)
			return asObj.DefaultValue(hint);
		else
			throw new TypeError("attempt to convert non-JavaScript object to primitive");
		
		} // ToPrimitive
Exemple #2
0
		} // ToUInt16
	
	
	// Convert the given value to a string value.
	public static string ToString(object value)
		{
		double d;
		if (value is string)
			return (string)value;
		else if (PrimSupport.AsNumber(value, out d))
			{
			// HACK snewman 7/26/01: format according to grammar in 9.8.1 on p. 47
			return System.Convert.ToString(d);
			}
		else if (value == null)
			return "null";
		else if (value is JUndefinedObject)
			return "undefined";
		else if (value is bool)
			return (bool)value ? "true" : "false";
		
		JObject asObj = value as JObject;
		if (asObj != null)
			return ToString(asObj.DefaultValue(JObject.ValueHintType.String));
		else
			return value.ToString();
		
		} // ToString
Exemple #3
0
		} // ToBoolean
	
	
	// Convert the given value to a numeric value.
	public static double ToNumber(object value)
		{
		double d;
		if (PrimSupport.AsNumber(value, out d))
			return d;
		else if (value == null)
			return 0;
		else if (value is JUndefinedObject)
			return Double.NaN;
		else if (value is bool)
			return (bool)value ? 1 : 0;
		else if (value is string)
			{
			// HACK snewman 7/26/01: parse according to grammar in 9.3.1 on p. 43
			return System.Convert.ToDouble((string)value);
			}
		
		JObject asObj = value as JObject;
		if (asObj != null)
			return ToNumber(asObj.DefaultValue(JObject.ValueHintType.Number));
		else
			throw new TypeError("attempt to convert non-JavaScript object to number");
		
		} // ToNumber