// Copyright 2009-2022 Josh Close // This file is a part of CsvHelper and is dual licensed under MS-PL and Apache 2.0. // See LICENSE.txt for details or visit http://www.opensource.org/licenses/ms-pl.html for MS-PL and http://opensource.org/licenses/Apache-2.0 for Apache 2.0. // https://github.com/JoshClose/CsvHelper using System; using System.Globalization; namespace CsvHelper.Configuration { /// /// Sets type converter options on a member map. /// public class MemberMapTypeConverterOption { private readonly MemberMap memberMap; /// /// Creates a new instance using the given . /// /// The member map the options are being applied to. public MemberMapTypeConverterOption(MemberMap memberMap) { this.memberMap = memberMap; } /// /// The used when type converting. /// This will override the global /// setting. /// /// The culture info. public virtual MemberMap CultureInfo(CultureInfo cultureInfo) { memberMap.Data.TypeConverterOptions.CultureInfo = cultureInfo; return memberMap; } /// /// The to use when type converting. /// This is used when doing any conversions. /// /// The date time style. public virtual MemberMap DateTimeStyles(DateTimeStyles dateTimeStyle) { memberMap.Data.TypeConverterOptions.DateTimeStyle = dateTimeStyle; return memberMap; } /// /// The to use when type converting. /// This is used when doing converting. /// /// The time span styles. public virtual MemberMap TimespanStyles(TimeSpanStyles timeSpanStyles) { memberMap.Data.TypeConverterOptions.TimeSpanStyle = timeSpanStyles; return memberMap; } /// /// The to use when type converting. /// This is used when doing any number conversions. /// /// public virtual MemberMap NumberStyles(NumberStyles numberStyle) { memberMap.Data.TypeConverterOptions.NumberStyles = numberStyle; return memberMap; } /// /// The string format to be used when type converting. /// /// The format. public virtual MemberMap Format(params string[] formats) { memberMap.Data.TypeConverterOptions.Formats = formats; return memberMap; } /// /// The to use when converting. /// This is used when doing conversions. /// /// Kind of the URI. public virtual MemberMap UriKind(UriKind uriKind) { memberMap.Data.TypeConverterOptions.UriKind = uriKind; return memberMap; } /// /// The string values used to represent a boolean when converting. /// /// A value indicating whether true values or false values are being set. /// A value indication if the current values should be cleared before adding the new ones. /// The string boolean values. public virtual MemberMap BooleanValues(bool isTrue, bool clearValues = true, params string[] booleanValues) { if (isTrue) { if (clearValues) { memberMap.Data.TypeConverterOptions.BooleanTrueValues.Clear(); } memberMap.Data.TypeConverterOptions.BooleanTrueValues.AddRange(booleanValues); } else { if (clearValues) { memberMap.Data.TypeConverterOptions.BooleanFalseValues.Clear(); } memberMap.Data.TypeConverterOptions.BooleanFalseValues.AddRange(booleanValues); } return memberMap; } /// /// The string values used to represent null when converting. /// /// The values that represent null. /// public virtual MemberMap NullValues(params string[] nullValues) { return NullValues(true, nullValues); } /// /// The string values used to represent null when converting. /// /// A value indication if the current values should be cleared before adding the new ones. /// The values that represent null. /// public virtual MemberMap NullValues(bool clearValues, params string[] nullValues) { if (clearValues) { memberMap.Data.TypeConverterOptions.NullValues.Clear(); } memberMap.Data.TypeConverterOptions.NullValues.AddRange(nullValues); return memberMap; } /// /// Ignore case when parsing enums. /// /// true to ignore case, otherwise false. public virtual MemberMap EnumIgnoreCase(bool ignoreCase = true) { memberMap.Data.TypeConverterOptions.EnumIgnoreCase = ignoreCase; return memberMap; } } }