/// <inheritdoc/> public virtual bool IsAcceptableAsType(string candidateString, IDataTypeSize size) { //we must preserve leading zeroes if its not actually 0 -- if they have 010101 then we have to use string but if they have just 0 we can use decimal if (zeroPrefixedNumber.IsMatch(candidateString)) { return(false); } return(IsAcceptableAsTypeImpl(candidateString, size)); }
/// <inheritdoc/> protected override bool IsAcceptableAsTypeImpl(string candidateString, IDataTypeSize size) { // "Y" / "N" is boolean unless the settings say it can't if (!Settings.CharCanBeBoolean && singleCharacter.IsMatch(candidateString)) { return(false); } return(base.IsAcceptableAsTypeImpl(candidateString, size)); }
/// <inheritdoc/> protected override bool IsAcceptableAsTypeImpl(string candidateString, IDataTypeSize sizeRecord) { if (IsExplicitDate(candidateString)) { return(false); } if (!candidateString.IsConvertibleTo(out int i, Culture)) { return(false); } sizeRecord.Size.IncreaseTo(i.ToString().Trim('-').Length, 0); return(true); }
/// <inheritdoc/> protected override bool IsAcceptableAsTypeImpl(string candidateString, IDataTypeSize sizeRecord) { try { //if it parses as a date if (DateTime.TryParse(candidateString, CultureInfo.CurrentCulture, DateTimeStyles.NoCurrentDateDefault, out var t)) { return(t.Year == 1 && t.Month == 1 && t.Day == 1);//without any ymd component then it's a date... this means 00:00 is a valid TimeSpan too } return(false); } catch (Exception) { return(false); } }
/// <inheritdoc/> protected override bool IsAcceptableAsTypeImpl(string candidateString, IDataTypeSize sizeRecord) { candidateString = TrimTrailingZeros(candidateString); if (IsExplicitDate(candidateString)) { return(false); } if (!decimal.TryParse(candidateString, NumberStyles.Any, Culture, out var t)) { return(false); } var dec = ((SqlDecimal)t); sizeRecord.Size.IncreaseTo(dec.Precision - dec.Scale, dec.Scale); return(true); }
/// <summary> /// Returns true if the given <paramref name="candidateString"/> is compatible with the T Type of this decider. This is the prefered method of overriding IsAcceptable. /// </summary> /// <param name="candidateString"></param> /// <param name="size"></param> /// <returns></returns> protected virtual bool IsAcceptableAsTypeImpl(string candidateString, IDataTypeSize size) { return(candidateString.IsConvertibleTo <T>(Culture)); }
/// <inheritdoc/> protected override bool IsAcceptableAsTypeImpl(string candidateString, IDataTypeSize sizeRecord) { //strings should never be interpreted as byte arrays return(false); }