Пример #1
0
        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)));
        }
Пример #2
0
        /// <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;
        }
Пример #3
0
        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));
        }