Ejemplo n.º 1
0
 public void WriteValuePart(bool part)
 {
     if (!_inPartialColumn)
     {
         throw new InvalidOperationException("WriteValueStart must be called before WriteValuePart.");
     }
     String8.FromBoolean(part).WriteTo(_stream);
 }
Ejemplo n.º 2
0
        public void Writer_CheckValidation(Func <Stream, ITabularWriter> buildWriter)
        {
            using (MemoryStream s = new MemoryStream())
            {
                using (ITabularWriter w = buildWriter(s))
                {
                    // Write before SetColumns
                    Verify.Exception <InvalidOperationException>(() => w.Write(0));

                    w.SetColumns(new string[] { "ID", "IsEven" });

                    // SetColumns already called
                    Verify.Exception <InvalidOperationException>(() => w.SetColumns(new string[] { "Three", "Four" }));

                    w.Write(0);

                    // Not enough columns
                    Verify.Exception <InvalidOperationException>(() => w.NextRow());

                    w.Write(true);

                    // Too many columns
                    Verify.Exception <InvalidOperationException>(() => w.Write(String8.FromBoolean(false)));

                    w.NextRow();

                    // WriteValuePart without WriteValueStart
                    Verify.Exception <InvalidOperationException>(() => w.WriteValuePart(true));

                    // WriteValueEnd not in partial value
                    Verify.Exception <InvalidOperationException>(() => w.WriteValueEnd());

                    w.WriteValueStart();

                    // Write in partial value
                    Verify.Exception <InvalidOperationException>(() => w.Write(true));

                    w.WriteValueEnd();
                }
            }
        }
Ejemplo n.º 3
0
 public void Write(bool value)
 {
     // Booleans are written without quotes and never need escaping. "ColumnName": true
     WriteColumnSeparator();
     String8.FromBoolean(value).WriteTo(_stream);
 }
Ejemplo n.º 4
0
        public NegatedTryConvert TryGetNegatedTryConvert(Type sourceType, Type targetType, object defaultValue)
        {
            // Build a converter for the set of types
            if (targetType == typeof(String8))
            {
                if (sourceType == typeof(string))
                {
                    return(new StringToString8Converter(defaultValue).StringToString8);
                }
                if (sourceType == typeof(DateTime))
                {
                    return(new ToString8Converter <DateTime>(defaultValue, 20, String8.FromDateTime).Convert);
                }
                if (sourceType == typeof(bool))
                {
                    return(new ToString8Converter <bool>(defaultValue, 0, (value, buffer, index) => String8.FromBoolean(value)).Convert);
                }

                if (sourceType == typeof(sbyte))
                {
                    return(new ToString8Converter <sbyte>(defaultValue, 4, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(byte))
                {
                    return(new ToString8Converter <byte>(defaultValue, 3, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(short))
                {
                    return(new ToString8Converter <short>(defaultValue, 6, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(ushort))
                {
                    return(new ToString8Converter <ushort>(defaultValue, 5, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(int))
                {
                    return(new ToString8Converter <int>(defaultValue, 11, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(uint))
                {
                    return(new ToString8Converter <uint>(defaultValue, 10, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(long))
                {
                    return(new ToString8Converter <long>(defaultValue, 21, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(ulong))
                {
                    return(new ToString8Converter <ulong>(defaultValue, 20, (value, buffer, index) => String8.FromNumber(value, false, buffer, index)).Convert);
                }
            }
            else if (sourceType == typeof(String8))
            {
                if (targetType == typeof(int))
                {
                    return(new FromString8Converter <int>(defaultValue, (String8 value, out int result) => value.TryToInteger(out result)).Convert);
                }
                else if (targetType == typeof(uint))
                {
                    return(new FromString8Converter <uint>(defaultValue, (String8 value, out uint result) => value.TryToUInt(out result)).Convert);
                }
                else if (targetType == typeof(DateTime))
                {
                    return(new FromString8Converter <DateTime>(defaultValue, (String8 value, out DateTime result) => value.TryToDateTime(out result)).Convert);
                }
                else if (targetType == typeof(bool))
                {
                    return(new FromString8Converter <bool>(defaultValue, (String8 value, out bool result) => value.TryToBoolean(out result)).Convert);
                }
                else if (targetType == typeof(long))
                {
                    return(new FromString8Converter <long>(defaultValue, (String8 value, out long result) => value.TryToLong(out result)).Convert);
                }
                else if (targetType == typeof(ulong))
                {
                    return(new FromString8Converter <ulong>(defaultValue, (String8 value, out ulong result) => value.TryToULong(out result)).Convert);
                }
                else if (targetType == typeof(ushort))
                {
                    return(new FromString8Converter <ushort>(defaultValue, (String8 value, out ushort result) => value.TryToUShort(out result)).Convert);
                }
                else if (targetType == typeof(short))
                {
                    return(new FromString8Converter <short>(defaultValue, (String8 value, out short result) => value.TryToShort(out result)).Convert);
                }
                else if (targetType == typeof(byte))
                {
                    return(new FromString8Converter <byte>(defaultValue, (String8 value, out byte result) => value.TryToByte(out result)).Convert);
                }
                else if (targetType == typeof(sbyte))
                {
                    return(new FromString8Converter <sbyte>(defaultValue, (String8 value, out sbyte result) => value.TryToSByte(out result)).Convert);
                }
            }

            return(null);
        }
Ejemplo n.º 5
0
 public void Write(bool value)
 {
     Write(String8.FromBoolean(value));
 }
Ejemplo n.º 6
0
 public void WriteValuePart(bool part)
 {
     WriteValuePart(String8.FromBoolean(part));
 }
Ejemplo n.º 7
0
        public NegatedTryConvert TryGetNegatedTryConvert(Type sourceType, Type targetType, object defaultValue)
        {
            // Build a converter for the set of types
            if (targetType == typeof(String8))
            {
                if (sourceType == typeof(string))
                {
                    return(new StringToString8Converter(defaultValue).StringToString8);
                }
                if (sourceType == typeof(DateTime))
                {
                    return(new ToString8Converter <DateTime>(defaultValue, 20, String8.FromDateTime).Convert);
                }
                if (sourceType == typeof(bool))
                {
                    return(new ToString8Converter <bool>(defaultValue, 0, (value, buffer, index) => String8.FromBoolean(value)).Convert);
                }
                if (sourceType == typeof(TimeSpan))
                {
                    return(new ToString8Converter <TimeSpan>(defaultValue, 21, String8.FromTimeSpan).Convert);
                }

                if (sourceType == typeof(sbyte))
                {
                    return(new ToString8Converter <sbyte>(defaultValue, 4, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(byte))
                {
                    return(new ToString8Converter <byte>(defaultValue, 3, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(short))
                {
                    return(new ToString8Converter <short>(defaultValue, 6, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(ushort))
                {
                    return(new ToString8Converter <ushort>(defaultValue, 5, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(int))
                {
                    return(new ToString8Converter <int>(defaultValue, 11, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(uint))
                {
                    return(new ToString8Converter <uint>(defaultValue, 10, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(long))
                {
                    return(new ToString8Converter <long>(defaultValue, 21, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(ulong))
                {
                    return(new ToString8Converter <ulong>(defaultValue, 20, (value, buffer, index) => String8.FromNumber(value, false, buffer, index)).Convert);
                }

                if (sourceType == typeof(float))
                {
                    return(new ToString8Converter <float>(defaultValue, 21, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
                if (sourceType == typeof(double))
                {
                    return(new ToString8Converter <double>(defaultValue, 21, (value, buffer, index) => String8.FromNumber(value, buffer, index)).Convert);
                }
            }
            else if (sourceType == typeof(String8))
            {
                if (targetType == typeof(int))
                {
                    return(new FromString8Converter <int>(defaultValue, (String8 value, out int result) => value.TryToInteger(out result)).Convert);
                }
                else if (targetType == typeof(uint))
                {
                    return(new FromString8Converter <uint>(defaultValue, (String8 value, out uint result) => value.TryToUInt(out result)).Convert);
                }
                else if (targetType == typeof(DateTime))
                {
                    return(new FromString8Converter <DateTime>(defaultValue, (String8 value, out DateTime result) => value.TryToDateTime(out result)).Convert);
                }
                else if (targetType == typeof(TimeSpan))
                {
                    // Support TimeSpan conversions from .NET Format (DDD.HH:MM:SS.mmm) and 'friendly' format (24h, 7d)
                    return(new FromString8Converter <TimeSpan>(defaultValue, (String8 value, out TimeSpan result) => value.TryToTimeSpanFriendly(out result)).Convert);
                }
                else if (targetType == typeof(bool))
                {
                    return(new FromString8Converter <bool>(defaultValue, (String8 value, out bool result) => value.TryToBoolean(out result)).Convert);
                }
                else if (targetType == typeof(long))
                {
                    return(new FromString8Converter <long>(defaultValue, (String8 value, out long result) => value.TryToLong(out result)).Convert);
                }
                else if (targetType == typeof(ulong))
                {
                    return(new FromString8Converter <ulong>(defaultValue, (String8 value, out ulong result) => value.TryToULong(out result)).Convert);
                }
                else if (targetType == typeof(ushort))
                {
                    return(new FromString8Converter <ushort>(defaultValue, (String8 value, out ushort result) => value.TryToUShort(out result)).Convert);
                }
                else if (targetType == typeof(short))
                {
                    return(new FromString8Converter <short>(defaultValue, (String8 value, out short result) => value.TryToShort(out result)).Convert);
                }
                else if (targetType == typeof(byte))
                {
                    return(new FromString8Converter <byte>(defaultValue, (String8 value, out byte result) => value.TryToByte(out result)).Convert);
                }
                else if (targetType == typeof(sbyte))
                {
                    return(new FromString8Converter <sbyte>(defaultValue, (String8 value, out sbyte result) => value.TryToSByte(out result)).Convert);
                }
                else if (targetType == typeof(double))
                {
                    return(new FromString8Converter <double>(defaultValue, (String8 value, out double result) => value.TryToDouble(out result)).Convert);
                }
                else if (targetType == typeof(float))
                {
                    return(new FromString8Converter <float>(defaultValue, (String8 value, out float result) => value.TryToFloat(out result)).Convert);
                }
            }

            return(null);
        }