예제 #1
0
        private string GetWordCase(
            eNumeralType numeralType,
            Func <string> singleCaseCallback,
            Func <string> twoCaseCallback,
            Func <string> multipleCaseCallback
            )
        {
            var word = string.Empty;

            if (numeralType == eNumeralType.SingleType)
            {
                word = singleCaseCallback();
            }
            else if (numeralType == eNumeralType.TwoThreeFour)
            {
                word = twoCaseCallback();
            }
            else if (numeralType == eNumeralType.Multiple)
            {
                word = multipleCaseCallback();
            }

            if (string.IsNullOrEmpty(word))
            {
                word = singleCaseCallback();
            }
            if (string.IsNullOrEmpty(word))
            {
                word = NominativeSingle;
            }

            return(word);
        }
예제 #2
0
        /// <summary>
        /// Возвращает предложный падеж в количественном варианте <paramref name="numeralType"/>.
        /// </summary>
        /// <returns>
        /// Возвращает <see cref="PrepositionalSingle"/> для <see cref="eNumeralType.SingleType"/>,
        /// <see cref="PrepositionalTwo"/> для <see cref="eNumeralType.TwoThreeFour"/> либо
        /// <see cref="PrepositionalMultiple"/> для <see cref="eNumeralType.Multiple"/>.
        /// Если <paramref name="returnSingleFormIfEmpty"/> равен true и <see cref="PrepositionalTwo"/> или <see cref="PrepositionalMultiple"/> пусто, то возвращает <see cref="PrepositionalSingle"/>.
        /// Если же <see cref="PrepositionalSingle"/> пусто, то возвращает <see cref="NominativeSingle"/>.
        /// </returns>
        public string GetPrepositional(eNumeralType numeralType, bool returnSingleFormIfEmpty = true)
        {
            var word = string.Empty;

            return(GetWordCase(numeralType, () => PrepositionalSingle, () => PrepositionalTwo, () => PrepositionalMultiple));
        }
예제 #3
0
        /// <summary>
        /// Возвращает винительный падеж в количественном варианте <paramref name="numeralType"/>.
        /// </summary>
        /// <returns>
        /// Возвращает <see cref="AccusativeSingle"/> для <see cref="eNumeralType.SingleType"/>,
        /// <see cref="AccusativeTwo"/> для <see cref="eNumeralType.TwoThreeFour"/> либо
        /// <see cref="AccusativeMultiple"/> для <see cref="eNumeralType.Multiple"/>.
        /// Если <paramref name="returnSingleFormIfEmpty"/> равен true и <see cref="AccusativeTwo"/> или <see cref="AccusativeMultiple"/> пусто, то возвращает <see cref="AccusativeSingle"/>.
        /// Если же <see cref="AccusativeSingle"/> пусто, то возвращает <see cref="NominativeSingle"/>.
        /// </returns>
        public string GetAccusative(eNumeralType numeralType, bool returnSingleFormIfEmpty = true)
        {
            var word = string.Empty;

            return(GetWordCase(numeralType, () => AccusativeSingle, () => AccusativeTwo, () => AccusativeMultiple));
        }