// Token: 0x060001B6 RID: 438 RVA: 0x00008E74 File Offset: 0x00007074 private static void CollectParts(ICollection <string> parts, ref int number, int divisor, GrammaticalGender gender, params string[] forms) { if (number < divisor) { return; } int result = number / divisor; number %= divisor; RussianNumberToWordsConverter.CollectPartsUnderOneThousand(parts, result, gender); parts.Add(RussianNumberToWordsConverter.ChooseOneForGrammaticalNumber(result, forms)); }
// Token: 0x060001B2 RID: 434 RVA: 0x00008AC8 File Offset: 0x00006CC8 public override string Convert(long input, GrammaticalGender gender) { if (input > 2147483647L || input < -2147483648L) { throw new NotImplementedException(); } int number = (int)input; if (number == 0) { return("ноль"); } List <string> parts = new List <string>(); if (number < 0) { parts.Add("минус"); number = -number; } RussianNumberToWordsConverter.CollectParts(parts, ref number, 1000000000, GrammaticalGender.Masculine, new string[] { "миллиард", "миллиарда", "миллиардов" }); RussianNumberToWordsConverter.CollectParts(parts, ref number, 1000000, GrammaticalGender.Masculine, new string[] { "миллион", "миллиона", "миллионов" }); RussianNumberToWordsConverter.CollectParts(parts, ref number, 1000, GrammaticalGender.Feminine, new string[] { "тысяча", "тысячи", "тысяч" }); if (number > 0) { RussianNumberToWordsConverter.CollectPartsUnderOneThousand(parts, number, gender); } return(string.Join(" ", parts)); }
// Token: 0x060001B7 RID: 439 RVA: 0x00008EA8 File Offset: 0x000070A8 private static void CollectOrdinalParts(ICollection <string> parts, ref int number, int divisor, GrammaticalGender gender, string prefixedForm, params string[] forms) { if (number < divisor) { return; } int result = number / divisor; number %= divisor; if (number != 0) { RussianNumberToWordsConverter.CollectPartsUnderOneThousand(parts, result, gender); parts.Add(RussianNumberToWordsConverter.ChooseOneForGrammaticalNumber(result, forms)); return; } if (result == 1) { parts.Add(prefixedForm); return; } parts.Add(RussianNumberToWordsConverter.GetPrefix(result) + prefixedForm); }
// Token: 0x060001B3 RID: 435 RVA: 0x00008BAC File Offset: 0x00006DAC public override string ConvertToOrdinal(int number, GrammaticalGender gender) { if (number == 0) { return("нулев" + RussianNumberToWordsConverter.GetEndingForGender(gender, number)); } List <string> parts = new List <string>(); if (number < 0) { parts.Add("минус"); number = -number; } RussianNumberToWordsConverter.CollectOrdinalParts(parts, ref number, 1000000000, GrammaticalGender.Masculine, "миллиардн" + RussianNumberToWordsConverter.GetEndingForGender(gender, number), new string[] { "миллиард", "миллиарда", "миллиардов" }); RussianNumberToWordsConverter.CollectOrdinalParts(parts, ref number, 1000000, GrammaticalGender.Masculine, "миллионн" + RussianNumberToWordsConverter.GetEndingForGender(gender, number), new string[] { "миллион", "миллиона", "миллионов" }); RussianNumberToWordsConverter.CollectOrdinalParts(parts, ref number, 1000, GrammaticalGender.Feminine, "тысячн" + RussianNumberToWordsConverter.GetEndingForGender(gender, number), new string[] { "тысяча", "тысячи", "тысяч" }); if (number >= 100) { string ending = RussianNumberToWordsConverter.GetEndingForGender(gender, number); int hundreds = number / 100; number %= 100; if (number == 0) { parts.Add(RussianNumberToWordsConverter.UnitsOrdinalPrefixes[hundreds] + "сот" + ending); } else { parts.Add(RussianNumberToWordsConverter.HundredsMap[hundreds]); } } if (number >= 20) { string ending2 = RussianNumberToWordsConverter.GetEndingForGender(gender, number); int tens = number / 10; number %= 10; if (number == 0) { parts.Add(RussianNumberToWordsConverter.TensOrdinal[tens] + ending2); } else { parts.Add(RussianNumberToWordsConverter.TensMap[tens]); } } if (number > 0) { parts.Add(RussianNumberToWordsConverter.UnitsOrdinal[number] + RussianNumberToWordsConverter.GetEndingForGender(gender, number)); } return(string.Join(" ", parts)); }
// Token: 0x060001B9 RID: 441 RVA: 0x00008F0F File Offset: 0x0000710F private static string ChooseOneForGrammaticalNumber(int number, string[] forms) { return(forms[RussianNumberToWordsConverter.GetIndex(RussianGrammaticalNumberDetector.Detect(number))]); }