예제 #1
0
        public string sumProp(long nSum, string sGender, string sCase)
        {
            if (!_caseses.ContainsKey(sCase) || !_genders.ContainsKey(sGender))
            {
                throw new InvalidDataException();
            }

            var caseVal   = _caseses[sCase];
            var genderVal = _genders[sGender];

            if (nSum == 0)
            {
                return(_zeroDictionary.GetStringTranscription(caseVal, genderVal));
            }

            var resultContainer = new StringBuilder();

            if (nSum < 0)
            {
                var minusText = _minusDictionary.GetStringTranscription(caseVal, genderVal);
                resultContainer.Append(minusText);
                resultContainer.Append(" ");
                nSum *= -1;
            }
            var numberText = _numericalParser.ParseNumber(nSum, caseVal, genderVal);

            resultContainer.Append(numberText);
            return(resultContainer.ToString());
        }
예제 #2
0
        public string ParseNumber(long number, string postfix, Cases caseVal, Genders genderVal)
        {
            var resultText   = "";
            var parsingValue = GetRangeForParsing(number);

            if (LowRangeVal <= parsingValue && parsingValue < HighRangeVal)
            {
                resultText = GetTextForRange(parsingValue, caseVal, genderVal);
            }
            resultText = ConcatTwoResult(resultText, postfix);

            if (_nextParser == null)
            {
                return(resultText);
            }
            else
            {
                return(_nextParser.ParseNumber(number, resultText, caseVal, genderVal));
            }
        }
예제 #3
0
        protected override string GetTextForRange(long number, Cases caseVal, Genders genderVal)
        {
            var numberOfUnits = number / LowRangeVal;
            var numberAsText  = _belowThousandParser.ParseNumber(numberOfUnits, caseVal, DescriptionGender);

            string descriptionText;

            if (numberOfUnits % 10 == 1 && numberOfUnits % 100 != 11)
            {
                descriptionText = LowDescription[caseVal];
            }
            else if ((numberOfUnits % 10 >= 2 && numberOfUnits % 10 <= 4) &&
                     (numberOfUnits % 100 > 20 || numberOfUnits % 100 < 10))
            {
                descriptionText = MiddleDescription[caseVal];
            }
            else
            {
                descriptionText = HighDescription[caseVal];
            }

            return(ConcatTwoResult(numberAsText, descriptionText));
        }