Example #1
0
        private void WritePropertyValue(TextWriter writer, Stack <RuntimeObject> stack, EcmaValue value)
        {
            switch (value.Type)
            {
            case EcmaValueType.Null:
                writer.Write("null");
                break;

            case EcmaValueType.Boolean:
                writer.Write(value.ToBoolean() ? "true" : "false");
                break;

            case EcmaValueType.Number:
                writer.Write(value.IsFinite ? value.ToString() : "null");
                break;

            case EcmaValueType.String:
                WriteString(writer, value.ToString());
                break;

            case EcmaValueType.Object:
                if (!value.IsCallable)
                {
                    if (EcmaArray.IsArray(value))
                    {
                        SerializeJsonArray(writer, stack, value.ToObject());
                    }
                    else
                    {
                        SerializeJsonObject(writer, stack, value.ToObject());
                    }
                }
                break;
            }
        }
Example #2
0
        public static EcmaValue ToBigInt(this EcmaValue value)
        {
            value = value.ToPrimitive(EcmaPreferredPrimitiveType.Number);
            switch (value.Type)
            {
            case EcmaValueType.Undefined:
            case EcmaValueType.Null:
            case EcmaValueType.Number:
            case EcmaValueType.Symbol:
                throw new EcmaTypeErrorException(InternalString.Error.NotConvertibleToBigInt, value);

            case EcmaValueType.Boolean:
                return(value.ToBoolean() ? value1n : value0n);

            case EcmaValueType.BigInt:
                return(value);

            case EcmaValueType.String:
                return(ToBigInt(value.ToStringOrThrow()));
            }
            throw new ArgumentException("Unknown value type", "value");
        }