示例#1
0
        public static string toLocaleString(object thisObj)
        {
            // TODO: Shouldn't this be generic!?
            SemanticAnalyser.assert_type(thisObj, typeof(ArrayObject));
            ArrayObject array_obj = (ArrayObject)thisObj;

            string separator = CultureInfo.CurrentCulture.TextInfo.ListSeparator + " ";

            Hashtable     elems = array_obj.elems;
            uint          n     = (uint)array_obj.length;
            StringBuilder str   = new StringBuilder();
            bool          first = true;

            for (uint i = 0; i < n; i++)
            {
                ScriptObject elem = (ScriptObject)Convert.ToObject(elems [i], null);
                if (!first && elem != null)
                {
                    str.Append(separator);
                }
                first = false;
                if (elem != null)
                {
                    str.Append(Convert.ToString(elem.CallMethod("toLocaleString", new object [] { })));
                }
            }
            return(str.ToString());
        }
示例#2
0
        public static string ToString(object value, bool explicitOK)
        {
            IConvertible ic = value as IConvertible;
            TypeCode     tc = Convert.GetTypeCode(value, ic);

            switch (tc)
            {
            case TypeCode.Empty:
                return("undefined");

            case TypeCode.DBNull:
                return("null");

            case TypeCode.Boolean:
                bool r = (bool)value;
                if (r)
                {
                    return("true");
                }
                else
                {
                    return("false");
                }

            case TypeCode.Char:
                return(ic.ToInt16(null).ToString());

            case TypeCode.String:
                return(ic.ToString(null));

            case TypeCode.Object:
                if (value is StringObject)
                {
                    return(((StringObject)value).value);
                }
                else if (value is ScriptObject)
                {
                    ScriptObject obj_value = (ScriptObject)value;
                    if (obj_value.HasMethod("toString"))
                    {
                        return((string)obj_value.CallMethod("toString"));
                    }
                    else
                    {
                        return((string)ObjectPrototype.smartToString((JSObject)obj_value));
                    }
                }

                Console.WriteLine("value.GetType = {0}", value.GetType());
                throw new NotImplementedException();

            default:
                if (IsNumberTypeCode(tc))
                {
                    double val = ic.ToDouble(null);
                    return(ToString(val));
                }

                Console.WriteLine("tc = {0}", tc);
                throw new NotImplementedException();
            }
        }