Пример #1
0
        private void btnDecline_Click(object sender, EventArgs e)
        {
            CyrNumber number = new CyrNumber();
            CyrResult result = null;

            switch (ddlAction.SelectedIndex)
            {
                case 0:
                    if (txtItem.Text.IsNullOrEmpty())
                    {
                        MessageBox.Show("Необходимо ввести единицу измерения!");
                        return;
                    }

                    CyrNoun noun;

                    try
                    {
                        noun = cyrCollection.Get(txtItem.Text, Cyriller.Model.GetConditionsEnum.Similar);
                    }
                    catch (CyrWordNotFoundException ex)
                    {
                        MessageBox.Show(string.Format("Слово {0} не найдено в коллекции!", ex.Word));
                        return;
                    }

                    CyrNumber.Item item = new CyrNumber.Item(noun);

                    result = number.Decline(txtNumber.Value, item);

                    break;
                case 1:
                    result = number.Decline(txtNumber.Value);
                    break;
                case 2:
                    result = number.Decline(txtNumber.Value, Cyriller.Model.GendersEnum.Feminine, Cyriller.Model.AnimatesEnum.Inanimated);
                    break;
                case 3:
                    result = number.Decline(txtNumber.Value, new CyrNumber.RurCurrency());
                    break;
                case 4:
                    result = number.Decline(txtNumber.Value, new CyrNumber.UsdCurrency());
                    break;
                case 5:
                    result = number.Decline(txtNumber.Value, new CyrNumber.EurCurrency());
                    break;
                case 6:
                    result = number.Decline(txtNumber.Value, new CyrNumber.YuanCurrency());
                    break;
                default:
                    MessageBox.Show("Необходимо выбрать тип склонения!");
                    return;
            }

            SetResult(result);
        }
Пример #2
0
        public string DeclineNoun(string word, int number, string caseName = "Nominative")
        {
            var nounsCollec = nouns.Get(word, GetConditionsEnum.Similar);
            var cyrNumber   = new CyrNumber();

            CyrNumber.Item item       = new CyrNumber.Item(nounsCollec);
            var            declineRes = cyrNumber.Decline(number, item);

            return(GetDeclensionInCase(declineRes, caseName));
        }
Пример #3
0
        static void Main(string[] args)
        {
            // Создаем генератор случайных чисел.
            Random rand = new Random();

            // Создаем склонятор чисел.
            CyrNumber number = new CyrNumber();

            {
                // Склоняем случайное число.
                CyrResult result = number.Decline(5300);
                Console.WriteLine(result.ToRussianStringDictionary());
            }

            {
                // Склоняем случайное количество рублей.
                // Так же можно использовать классы `CyrNumber.EurCurrency`, `CyrNumber.UsdCurrency` и `CyrNumber.YuanCurrency`.
                // Либо создать свой класс унаследовав его от `CyrNumber.Currency`.
                CyrNumber.Currency currency = new CyrNumber.RurCurrency();
                CyrResult          result   = number.Decline((decimal)5300, currency);
            }

            {
                // Создаем коллекцию всех существительных.
                CyrNounCollection nouns = new CyrNounCollection();

                // Получаем существительное из коллекции используя точное совпадение.
                CyrNoun noun = nouns.Get("компьютер", GetConditionsEnum.Strict);

                // Упаковываем существительное для склонения количества.
                CyrNumber.Item item = new CyrNumber.Item(noun);

                // Склоняем случайное количество компьютеров.
                CyrResult result = number.Decline(rand.Next(0, 100), item);
            }

            // Выбираем правильное склонение существительного в зависимости от количества.
            string name = number.Case(rand.Next(0, 100), "компьютер", "компьютера", "компьютеров");
        }
Пример #4
0
        public ActionResult Number(string w, string a, string i)
        {
            ViewBag.Page = "Decline.Number";

            if (w.IsNullOrEmpty() || a.IsNullOrEmpty())
            {
                ViewBag.Action = "Item";
                return(View());
            }

            List <string> errors = new List <string>();
            CyrResult     result = null;
            decimal       v;

            if (decimal.TryParse(w, System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.CultureInfo.InvariantCulture, out v))
            {
                CyrNumber      cyr = new CyrNumber();
                CyrNumber.Item item;

                switch (a)
                {
                case "Item":
                    CyrNoun noun;

                    try
                    {
                        noun = this.NounCollection.Get(i, out string fw, out CasesEnum c, out NumbersEnum n);
                    }
                    catch (CyrWordNotFoundException ex)
                    {
                        errors.Add(string.Format("Слово \"<strong>{0}</strong>\" не найдено в коллекции. Попбробуйте другое слово.", ex.Word));
                        break;
                    }

                    item   = new CyrNumber.Item(noun);
                    result = cyr.Decline(v, item);

                    if ((long)v == v)
                    {
                        string[] strings = item.GetName(CasesEnum.Nominative, (long)v);
                        ViewBag.ItemText = cyr.Case((long)v, strings[0], strings[1], strings[2]);
                    }
                    else
                    {
                        string[] strings = item.GetName(CasesEnum.Nominative, 2);
                        ViewBag.ItemText = strings[1];
                    }

                    break;

                case "Masculine":
                    result = cyr.Decline(v, Model.GendersEnum.Masculine, Model.AnimatesEnum.Inanimated);
                    break;

                case "Feminine":
                    result = cyr.Decline(v, Model.GendersEnum.Feminine, Model.AnimatesEnum.Inanimated);
                    break;

                case "Rub":
                    result = cyr.Decline(v, new CyrNumber.RurCurrency());
                    ViewBag.CurrencyClass = "fa-ruble";
                    ViewBag.CurrencyText  = "руб.";
                    break;

                case "Usd":
                    result = cyr.Decline(v, new CyrNumber.UsdCurrency());
                    ViewBag.CurrencyClass = "fa-usd";
                    ViewBag.CurrencyText  = "$";
                    break;

                case "Eur":
                    result = cyr.Decline(v, new CyrNumber.EurCurrency());
                    ViewBag.CurrencyClass = "fa-eur";
                    ViewBag.CurrencyText  = "€";
                    break;

                case "Yuan":
                    result = cyr.Decline(v, new CyrNumber.YuanCurrency());
                    ViewBag.CurrencyClass = "fa-yen";
                    ViewBag.CurrencyText  = "¥";
                    break;

                default:
                    errors.Add(string.Format("{0} не является правильной операцией!", a));
                    break;
                }
            }
            else
            {
                errors.Add(string.Format("{0} не является правильным числом!", w));
            }

            ViewBag.Item   = i;
            ViewBag.Text   = w;
            ViewBag.Action = a;
            ViewBag.Result = result;
            ViewBag.Errors = errors;
            ViewBag.Cases  = CyrDeclineCase.GetEnumerable().ToArray();

            return(View());
        }
Пример #5
0
        private void btnDecline_Click(object sender, EventArgs e)
        {
            CyrNumber number = new CyrNumber();
            CyrResult result = null;

            switch (ddlAction.SelectedIndex)
            {
            case 0:
                if (txtItem.Text.IsNullOrEmpty())
                {
                    MessageBox.Show("Необходимо ввести единицу измерения!");
                    return;
                }

                CyrNoun noun;

                try
                {
                    noun = cyrCollection.Get(txtItem.Text, Cyriller.Model.GetConditionsEnum.Similar);
                }
                catch (CyrWordNotFoundException ex)
                {
                    MessageBox.Show(string.Format("Слово {0} не найдено в коллекции!", ex.Word));
                    return;
                }

                CyrNumber.Item item = new CyrNumber.Item(noun);

                result = number.Decline(txtNumber.Value, item);

                break;

            case 1:
                result = number.Decline(txtNumber.Value);
                break;

            case 2:
                result = number.Decline(txtNumber.Value, Cyriller.Model.GendersEnum.Feminine, Cyriller.Model.AnimatesEnum.Inanimated);
                break;

            case 3:
                result = number.Decline(txtNumber.Value, new CyrNumber.RurCurrency());
                break;

            case 4:
                result = number.Decline(txtNumber.Value, new CyrNumber.UsdCurrency());
                break;

            case 5:
                result = number.Decline(txtNumber.Value, new CyrNumber.EurCurrency());
                break;

            case 6:
                result = number.Decline(txtNumber.Value, new CyrNumber.YuanCurrency());
                break;

            default:
                MessageBox.Show("Необходимо выбрать тип склонения!");
                return;
            }

            SetResult(result);
        }
Пример #6
0
        public ActionResult Number(string w, string a, string i)
        {
            ViewBag.Page = "Decline.Number";

            if (w.IsNullOrEmpty() || a.IsNullOrEmpty())
            {
                ViewBag.Action = "Item";
                return View();
            }

            List<string> errors = new List<string>();
            CyrResult result = null;
            decimal v;

            if (decimal.TryParse(w, System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.CultureInfo.InvariantCulture, out v))
            {
                CyrNumber cyr = new CyrNumber();
                CyrNumber.Item item;

                switch (a)
                {
                    case "Item":
                        CyrNoun noun;

                        try
                        {
                            noun = this.NounCollection.Get(i, GetConditionsEnum.Similar);
                        }
                        catch (CyrWordNotFoundException ex)
                        {
                            errors.Add(string.Format("Слово \"<strong>{0}</strong>\" не найдено в коллекции. Попбробуйте другое слово.", ex.Word));
                            break;
                        }

                        item = new CyrNumber.Item(noun);
                        result = cyr.Decline(v, item);

                        if ((long)v == v)
                        {
                            string[] strings = item.GetName(CasesEnum.Nominative, (long)v);
                            ViewBag.ItemText = cyr.Case((long)v, strings[0], strings[1], strings[2]);
                        }
                        else
                        {
                            string[] strings = item.GetName(CasesEnum.Nominative, 2);
                            ViewBag.ItemText = strings[1];
                        }

                        break;
                    case "Masculine":
                        result = cyr.Decline(v, Model.GendersEnum.Masculine, Model.AnimatesEnum.Inanimated);
                        break;
                    case "Feminine":
                        result = cyr.Decline(v, Model.GendersEnum.Feminine, Model.AnimatesEnum.Inanimated);
                        break;
                    case "Rub":
                        result = cyr.Decline(v, new CyrNumber.RurCurrency());
                        ViewBag.CurrencyClass = "fa-ruble";
                        ViewBag.CurrencyText = "руб.";
                        break;
                    case "Usd":
                        result = cyr.Decline(v, new CyrNumber.UsdCurrency());
                        ViewBag.CurrencyClass = "fa-usd";
                        ViewBag.CurrencyText = "$";
                        break;
                    case "Eur":
                        result = cyr.Decline(v, new CyrNumber.EurCurrency());
                        ViewBag.CurrencyClass = "fa-eur";
                        ViewBag.CurrencyText = "€";
                        break;
                    case "Yuan":
                        result = cyr.Decline(v, new CyrNumber.YuanCurrency());
                        ViewBag.CurrencyClass = "fa-yen";
                        ViewBag.CurrencyText = "¥";
                        break;
                    default:
                        errors.Add(string.Format("{0} не является правильной операцией!", a));
                        break;
                }
            }
            else
            {
                errors.Add(string.Format("{0} не является правильным числом!", w));
            }

            ViewBag.Item = i;
            ViewBag.Text = w;
            ViewBag.Action = a;
            ViewBag.Result = result;
            ViewBag.Errors = errors;

            return View();
        }