Модуль склонения по падежам на 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 |
Первая версия |