public void WriteValuePart(bool part) { if (!_inPartialColumn) { throw new InvalidOperationException("WriteValueStart must be called before WriteValuePart."); } String8.FromBoolean(part).WriteTo(_stream); }
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(); } } }
public void Write(bool value) { // Booleans are written without quotes and never need escaping. "ColumnName": true WriteColumnSeparator(); String8.FromBoolean(value).WriteTo(_stream); }
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); }
public void Write(bool value) { Write(String8.FromBoolean(value)); }
public void WriteValuePart(bool part) { WriteValuePart(String8.FromBoolean(part)); }
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); }