morpher.ru +7 (925) 336 9960
nowhere@morpher.ru
 
 
Мой Морфер

Модуль склонения по падежам на JavaScript

Склонение по падежам

Пример склонения по падежам:

        
            var declension = new Declension();
            var parse = declension.parse("Александр Сергеевич Пушкин");
            parse.getForm(Case.Gen, false)) == "Александра Сергеевича Пушкина"
        
    

Разделение ФИО на фамилию, имя и отчество

        
            var fio = parse.getFIO();    
            if (fio != null) {
                fio.getLastName() == "Пушкин";
                fio.getFirstName() == "Александр";
                fio.getMiddleName() == "Сергеевич";
            }
        
    

Склонение по родам (changeGender)

        
            "уважаемый" == declension.changeGender("уважаемый", Gender.Masculine); 
            "уважаемая" == declension.changeGender("уважаемый", Gender.Feminine); 
            "уважаемое" == declension.changeGender("уважаемый", Gender.Neuter); 
            "уважаемые" == declension.changeGender("уважаемый", Gender.Plural); 
        
    

Определение рода или пола по имени (getGender)

Функция getGender возвращает род и число заданного слова или словосочетания:

        
            declension.parse("кофе").getGender(); // Gender.Masculine
        
    

Ее удобно использовать параллельно с функцией changeGender:

        
            var dear = function(name) {
                var gender = declension.parse(name).getGender();
                return declension.changeGender("уважаемый", gender) + " " + name;
            }
            dear("Иван") == "уважаемый Иван"; 
            dear("Ляйсан") == "уважаемая Ляйсан";
        
    

Пропись чисел (spell, spellOrdinal)

Пример прописи числа:

        
            var speller = new NumberSpeller(declension);
            var result = speller.spell(38, "попугай", Case.Nom);
            var spell = result.Number + " " + result.Unit; 
            spell == "тридцать восемь попугаев"
        
    

Функция spell возвращает пропись числа (тридцать восемь) и единицу измерения (попугаев) отдельно, чтобы их можно было комбинировать разными способами. Например, вот как можно получить пропись вида «в течение N календарных дней»:

        
            var spellDays = function(n) {
                var result = speller.spell(n, "календарный день", Case.Gen);
                return n + " (" + result.Number + ") " + " " + result.Unit;
            }
            spellDays(14) == "14 (четырнадцати) календарных дней";
            spellDays(21) == "21 (двадцати одного) календарного дня";
        
    

Также можно получить пропись числа в виде порядкового числительного (второй, третий...):

        
            var ordinalSpeller = new OrdinalSpeller(new Declension());
            ordinalSpeller.spellOrdinal(100, false) == "сотый"; 
            ordinalSpeller.spellOrdinal(101, false) == "сто первый"; 
        
    

Последний параметр (true/false) говорит функции, нужно ли ставить слово «один» перед «тысяча», «миллион» и т.д.:

        
            ordinalSpeller.spellOrdinal(1000, false) == "тысячный";
            ordinalSpeller.spellOrdinal(1000, true)  == "однотысячный"
            ordinalSpeller.spellOrdinal(1001, false) == "тысяча первый"
            ordinalSpeller.spellOrdinal(1001, true)  == "одна тысяча первый"
        
    

Изменить род порядкового числительного (чтобы получить «первая», «первое», «первые») можно при помощи функции changeGender.

Пропись дат

        
            var dateSpeller = new DateSpeller(ordinalSpeller);
            dateSpeller.spellDate(new Date("2000-01-01")) 
                == "первое января двухтысячного года";
        
    

Как и в функции spellOrdinal, последний параметр указывает, нужно ли использовать слово «один» перед «тысяча» (true/false). Функции также можно передать падеж (Case.Gen, родительный): «двенадцатого апреля»:

        
            dateSpeller.spellDate(new Date("1961-04-12"), Case.Gen, false) 
                == "двенадцатого апреля тысяча девятьсот шестьдесят первого года";
            dateSpeller.spellDate(new Date("1961-04-12"), Case.Gen, true) 
                == "двенадцатого апреля одна тысяча девятьсот шестьдесят первого года";
        
    

Пользовательский словарь

Пользовательский словарь служит для коррекции склонения отдельных словосочетаний.

        
            var declension = new Declension(userDict);
        
    

Формат файла словаря

Технические характеристики

  • Модуль полностью написан на JavaScript и не имеет зависимостей.
  • Модуль полностью автономен и не обращается ни к диску, ни к сети.
  • Все методы модуля потокобезопасны.
  • Размер модуля меньше 700К в виде min.js, меньше 300К в zip.

Комплект поставки

Модуль поставляется в виде одного файла ru.morpher.min.js.

История изменений

Версия Дата Описание
0.0.9 27.03.2021 Первая версия


 

Библиотеки

© Сергей Слепов, 2003 - 2021.