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()); }
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)); } }
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)); }