public override SpelledNumber SpellOrdinal(ulong number, Gender gender = Gender.Neutral) { if (number < _settings.Magnitude) { return(InnerSpeller.SpellOrdinal(number, gender)); } ulong numberOfUnits = number / _settings.Magnitude; ulong reminder = number % _settings.Magnitude; if (reminder == 0) { string result = GetOrdinal(numberOfUnits, gender); SpelledNumber unitsOrdinalSpelled = new SpelledNumber(result, false); return(unitsOrdinalSpelled); } SpelledNumber unitsSpelled; if (numberOfUnits == 1) { unitsSpelled = new SpelledNumber(_settings.Singular, false); } else { SpelledNumber spelled = InnerSpeller.Spell(numberOfUnits, _settings.SpellingGender); unitsSpelled = new SpelledNumber(spelled.Spelled + _settings.PluralSuffix, spelled.ContainsAnd); } return(unitsSpelled.Concat(InnerSpeller.SpellOrdinal(reminder, gender))); }
/// <summary> /// Spells <paramref name="number"/> in ordinal manner based on the <paramref name="gender"/>. /// </summary> /// <remarks> /// This spells the so called "редна форма". /// Example: "първи, първа, първо, втори, втора, второ ...." /// </remarks> public string SpellOrdinal(long number, Gender gender = Gender.Neutral) { bool isNegative = false; if (number < 0) { isNegative = true; number = number * (-1); } SpelledNumber result = s_speller.SpellOrdinal((ulong)number, gender); return (isNegative ? "минус " : "") + result; }
public SpelledNumber Concat(SpelledNumber other) { if (!other.ContainsAnd) { return(new SpelledNumber( spelled: this.Spelled + " и " + other.Spelled, containsAnd: true)); } return(new SpelledNumber( spelled: this.Spelled + " " + other.Spelled, containsAnd: true)); }