Ejemplo n.º 1
0
        private string GetMinuteKeyWord(int minutes, NumberDeclension declension)
        {
            if (minutes > 20)
            {
                minutes %= 10;
            }
            switch (declension)
            {
            case NumberDeclension.N_ti:
                if (minutes == 1)
                {
                    return(MINUTE_KEY_WORD_MINUTY);
                }
                return(MINUTE_KEY_WORD_MINUT);

            default:
                if (minutes == 1)
                {
                    return(MINUTE_KEY_WORD_MINUTA);
                }
                if (2 <= minutes && minutes <= 4)
                {
                    return(MINUTE_KEY_WORD_MINUTY);
                }
                return(MINUTE_KEY_WORD_MINUT);
            }
        }
Ejemplo n.º 2
0
        public string[] GetSoundForNumber(int number, bool useFeminine, NumberDeclension declension)
        {
            CodeContract.Requires(-999999 <= number && number <= 999999);
            var sounds = new List <string>();

            if (number < 0)
            {
                sounds.Add(_numbersSoundsDirPath + "minus");

                number *= -1;
            }
            if (0 <= number && number <= 20)
            {
                sounds.Add(GetSoundForMonotonousNumber(number, useFeminine, declension));
            }
            else if (number < 100)
            {
                sounds.AddRange(GetSoundForNumberFrom21To99(number, useFeminine, declension));
            }
            else if (number < 1000)
            {
                sounds.AddRange(GetSoundForNumberFrom100To999(number, useFeminine, declension));
            }
            else if (number < 1000000)
            {
                sounds.AddRange(GetSoundForNumberFrom1000To999999(number, useFeminine, declension));
            }
            return(sounds.ToArray());
        }
Ejemplo n.º 3
0
        private string GetSoundForMonotonousNumber(int number, bool useFeminine, NumberDeclension declension)
        {
            if (useFeminine)
            {
                switch (declension)
                {
                case NumberDeclension.N_ti:
                    if (number == 1)
                    {
                        return(GetNumberSoundFilePath(declension, "1oi"));
                    }
                    break;

                case NumberDeclension.None:
                    if (number == 1)
                    {
                        return(GetNumberSoundFilePath(declension, "1a"));
                    }
                    if (number == 2)
                    {
                        return(GetNumberSoundFilePath(declension, "2e"));
                    }
                    break;
                }
            }
            return(GetNumberSoundFilePath(declension, number));
        }
Ejemplo n.º 4
0
 private string GetNumberSoundFilePath(NumberDeclension declension, object numberName)
 {
     if (declension == NumberDeclension.None)
     {
         return(string.Format("{0}{1}", _numbersSoundsDirPath, numberName));
     }
     return(string.Format("{0}{1}/{2}", _numbersSoundsDirPath, declension, numberName));
 }
Ejemplo n.º 5
0
        public string[] GetSoundForMinutes(int minutes, bool useFemale, NumberDeclension declension)
        {
            CodeContract.Requires(0 <= minutes && minutes <= 59);
            var sounds = new List <string>();

            sounds.AddRange(GetSoundForNumber(minutes, useFemale, declension));
            sounds.Add(GetSoundForMinuteWord(minutes, declension));
            return(sounds.ToArray());
        }
Ejemplo n.º 6
0
        public string[] GetSoundForHours(int hours, bool useFeminine, NumberDeclension declension)
        {
            CodeContract.Requires(0 <= hours && hours <= 23);
            var sounds = new List <string>();

            sounds.AddRange(GetSoundForNumber(hours, useFeminine, declension));
            var soundForHourWord = string.Format("{0}{1}", _timesSoundsDirPath, GetHourKeyWord(hours, declension));

            sounds.Add(soundForHourWord);
            return(sounds.ToArray());
        }
Ejemplo n.º 7
0
        private string GetHourKeyWord(int hours, NumberDeclension declension)
        {
            switch (declension)
            {
            case NumberDeclension.N_ti:
                if (hours == 1 || hours == 21)
                {
                    return(HOUR_KEY_WORD_CHAASA);
                }
                return(HOUR_KEY_WORD_CHASOV);

            default:
                if (hours == 1 || hours == 21)
                {
                    return(HOUR_KEY_WORD_CHAS);
                }
                if ((2 <= hours && hours <= 4) || hours >= 22)
                {
                    return(HOUR_KEY_WORD_CHASA);
                }
                return(HOUR_KEY_WORD_CHASOV);
            }
        }
Ejemplo n.º 8
0
 private string GetSoundForMinuteWord(int minutes, NumberDeclension declension)
 {
     return string.Format("{0}{1}", _timesSoundsDirPath, GetMinuteKeyWord(minutes, declension));
 }
Ejemplo n.º 9
0
 private string GetNumberSoundFilePath(NumberDeclension declension, object numberName)
 {
     if (declension == NumberDeclension.None)
         return string.Format("{0}{1}", _numbersSoundsDirPath, numberName);
     return string.Format("{0}{1}/{2}", _numbersSoundsDirPath, declension, numberName);
 }
Ejemplo n.º 10
0
 private string GetMinuteKeyWord(int minutes, NumberDeclension declension)
 {
     if (minutes > 20)
         minutes %= 10;
     switch (declension)
     {
         case NumberDeclension.N_ti:
             if (minutes == 1)
                 return MINUTE_KEY_WORD_MINUTY;
             return MINUTE_KEY_WORD_MINUT;
         default:
             if (minutes == 1)
                 return MINUTE_KEY_WORD_MINUTA;
             if (2 <= minutes && minutes <= 4)
                 return MINUTE_KEY_WORD_MINUTY;
             return MINUTE_KEY_WORD_MINUT;
     }
 }
Ejemplo n.º 11
0
 private string GetHourKeyWord(int hours, NumberDeclension declension)
 {
     switch (declension)
     {
         case NumberDeclension.N_ti:
             if (hours == 1 || hours == 21)
                 return HOUR_KEY_WORD_CHAASA;
                 return HOUR_KEY_WORD_CHASOV;
         default:
                 if (hours == 1 || hours == 21)
                     return HOUR_KEY_WORD_CHAS;
                 if ((2 <= hours && hours <= 4) || hours >= 22)
                     return HOUR_KEY_WORD_CHASA;
                 return HOUR_KEY_WORD_CHASOV;
     }
 }
Ejemplo n.º 12
0
 public string[] GetSoundForNumber(int number, bool useFeminine, NumberDeclension declension)
 {
     CodeContract.Requires(-999999 <= number && number <= 999999);
     var sounds = new List<string>();
     if (number < 0)
     {
         sounds.Add(_numbersSoundsDirPath + "minus");
         number *= -1;
     }
     if (0 <= number && number <= 20)
     {
         sounds.Add(GetSoundForMonotonousNumber(number, useFeminine, declension));
     }
     else if (number < 100)
     {
         sounds.AddRange(GetSoundForNumberFrom21To99(number, useFeminine, declension));
     }
     else if (number < 1000)
     {
         sounds.AddRange(GetSoundForNumberFrom100To999(number, useFeminine, declension));
     }
     else if (number < 1000000)
     {
         sounds.AddRange(GetSoundForNumberFrom1000To999999(number, useFeminine, declension));
     }
     return sounds.ToArray();
 }
Ejemplo n.º 13
0
 public string[] GetSoundForMinutes(int minutes, bool useFemale, NumberDeclension declension)
 {
     CodeContract.Requires(0 <= minutes && minutes <= 59);
     var sounds = new List<string>();
     sounds.AddRange(GetSoundForNumber(minutes, useFemale, declension));
     sounds.Add(GetSoundForMinuteWord(minutes, declension));
     return sounds.ToArray();
 }
Ejemplo n.º 14
0
        private IEnumerable <string> GetSoundForNumberFrom21To99(int number, bool useFeminine, NumberDeclension declension)
        {
            var sounds = new List <string>();
            var ten    = number / 10 * 10;
            var one    = number % 10;

            if (ten != 0)
            {
                sounds.Add(GetSoundForMonotonousNumber(
                               ten,
                               useFeminine,
                               (one == 0 || declension == NumberDeclension.N_ti) ? declension : NumberDeclension.None));
            }
            if (one != 0)
            {
                sounds.Add(GetSoundForMonotonousNumber(one, useFeminine, declension));
            }
            return(sounds);
        }
Ejemplo n.º 15
0
        private IEnumerable<string> GetSoundForNumberFrom100To999(int number, bool useFeminine, NumberDeclension declension)
        {
            var sounds = new List<string>();
            var hundred = number / 100 * 100;
            var tenWithOne = number % 100;
            sounds.Add(GetSoundForMonotonousNumber(hundred, useFeminine,
                tenWithOne == 0 ? declension : NumberDeclension.None));

            if (tenWithOne != 0)
            {
                if (tenWithOne <= 20)
                    sounds.Add(GetSoundForMonotonousNumber(tenWithOne, useFeminine, declension));
                else
                    sounds.AddRange(GetSoundForNumberFrom21To99(tenWithOne, useFeminine, declension));
            }
            return sounds;
        }
Ejemplo n.º 16
0
 private string GetSoundForMinuteWord(int minutes, NumberDeclension declension)
 {
     return(string.Format("{0}{1}", _timesSoundsDirPath, GetMinuteKeyWord(minutes, declension)));
 }
Ejemplo n.º 17
0
 private string GetSoundForMonotonousNumber(int number, bool useFeminine, NumberDeclension declension)
 {
     if (useFeminine)
     {
         switch (declension)
         {
             case NumberDeclension.N_ti:
                 if (number == 1)
                     return GetNumberSoundFilePath(declension, "1oi");
                 break;
             case NumberDeclension.None:
                 if (number == 1)
                     return GetNumberSoundFilePath(declension, "1a");
                 if (number == 2)
                     return GetNumberSoundFilePath(declension, "2e");
                 break;
         }
     }
     return GetNumberSoundFilePath(declension, number);
 }
Ejemplo n.º 18
0
        private IEnumerable <string> GetSoundForNumberFrom1000To999999(int number, bool useFeminine, NumberDeclension declension)
        {
            var sounds   = new List <string>();
            var thousand = number / 1000;
            var hundred  = number % 1000;

            sounds.AddRange(GetSoundForNumber(thousand, true, hundred == 0 ? declension : NumberDeclension.None));
            var soundForThousandWord = string.Format("{0}{1}", _numbersSoundsDirPath, GetThousandKeyWord(thousand));

            sounds.Add(soundForThousandWord);


            if (hundred != 0)
            {
                sounds.AddRange(GetSoundForNumber(hundred, useFeminine, declension));
            }
            return(sounds);
        }
Ejemplo n.º 19
0
        private IEnumerable<string> GetSoundForNumberFrom1000To999999(int number, bool useFeminine, NumberDeclension declension)
        {
            var sounds = new List<string>();
            var thousand = number / 1000;
            var hundred = number % 1000;
            sounds.AddRange(GetSoundForNumber(thousand, true, hundred == 0 ? declension : NumberDeclension.None));
            var soundForThousandWord = string.Format("{0}{1}", _numbersSoundsDirPath, GetThousandKeyWord(thousand));
            sounds.Add(soundForThousandWord);

            if (hundred != 0)
                sounds.AddRange(GetSoundForNumber(hundred, useFeminine, declension));
            return sounds;
        }
Ejemplo n.º 20
0
        private IEnumerable <string> GetSoundForNumberFrom100To999(int number, bool useFeminine, NumberDeclension declension)
        {
            var sounds     = new List <string>();
            var hundred    = number / 100 * 100;
            var tenWithOne = number % 100;

            sounds.Add(GetSoundForMonotonousNumber(hundred, useFeminine,
                                                   tenWithOne == 0 ? declension : NumberDeclension.None));


            if (tenWithOne != 0)
            {
                if (tenWithOne <= 20)
                {
                    sounds.Add(GetSoundForMonotonousNumber(tenWithOne, useFeminine, declension));
                }
                else
                {
                    sounds.AddRange(GetSoundForNumberFrom21To99(tenWithOne, useFeminine, declension));
                }
            }
            return(sounds);
        }
Ejemplo n.º 21
0
 private IEnumerable<string> GetSoundForNumberFrom21To99(int number, bool useFeminine, NumberDeclension declension)
 {
     var sounds = new List<string>();
     var ten = number / 10 * 10;
     var one = number % 10;
     if (ten != 0)
         sounds.Add(GetSoundForMonotonousNumber(
             ten,
             useFeminine,
             (one == 0 || declension == NumberDeclension.N_ti) ? declension : NumberDeclension.None));
     if (one != 0)
         sounds.Add(GetSoundForMonotonousNumber(one, useFeminine, declension));
     return sounds;
 }
Ejemplo n.º 22
0
 public string[] GetSoundForHours(int hours, bool useFeminine, NumberDeclension declension)
 {
     CodeContract.Requires(0 <= hours && hours <= 23);
     var sounds = new List<string>();
     sounds.AddRange(GetSoundForNumber(hours, useFeminine, declension));
     var soundForHourWord = string.Format("{0}{1}", _timesSoundsDirPath, GetHourKeyWord(hours, declension));
     sounds.Add(soundForHourWord);
     return sounds.ToArray();
 }