npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

morpher-ws3-client

v1.0.8

Published

JavaScript-клиент веб-сервиса "Морфер" 3.0

Downloads

134

Readme

Склонение по падежам (Морфер)

Build Status npm version GitHub license npm

Библиотека реализует следующие функции

(с помощью веб-сервиса "Морфер 3.0")

На русском языке:

На украинском языке:

На казахском языке:

Общие:

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

Веб-сервис поддерживает исправление склонения по требованию пользователя. Для этого имеются 3 метода:

Веб-сервис "Морфер 3.0" предусматривает бесплатное (с ограничениями) и платное использование. Подробнее смотрите на сайте проекта.

Загрузка

Установка

Браузер


<script src="morpher.min.js"></script>

Node.js

При использовании npm:

npm i morpher-ws3-client

Примечание: добавьте --save, если вы используете npm < 5.0.0

Использование

const morpher = new Morpher({
  baseUrl: 'https://localhost', // по умолчанию https://ws3.morpher.ru
  token: 'YOUR_TOKEN',          // по умолчанию null
  timeoutMs: 1000,              // по умолчанию 3000
});

Можно вызвать конструктор без аргументов, в этом случае будут использоваться параметры по умолчанию.

const morpher = new Morpher();

Склонение по падежам на русском языке

Для склонения слов и словосочетаний используется метод russian.declension(phrase, flags):

morpher.russian.declension('Программист').then(
    result => {
      console.log(result['родительный']);                  // Программиста
      console.log(result['множественное']['родительный']); // Программистов
      console.log(result.множественное.родительный);       // Программистов
      console.log(result.plural.genitive);                 // Программистов
    },
    error => {
      if (typeof error === 'MorpherError') {
        console.error(error.message + ' Код ошибки: ' + error.code);
      } else {
        console.error(error);
      }
    }
);

result — объект DeclensionResult со следующими свойствами:

  • именительный (nominative) — текст в именительном падеже;
  • родительный (genitive) — текст в родительном падеже;
  • дательный (dative) — текст в дательном падеже;
  • винительный (accusative) — текст в винительном падеже;
  • творительный (instrumental) — текст в творительном падеже;
  • предложный (prepositional) — текст в предложном падеже;
  • множественное (plural) — объект со свойствами-падежами для текста во множественном числе.

При использовании платного аккаунта на сервисе, определяются дополнительные свойства:

  • предложный_О (prepositional_O) — предложный падеж с предлогом О/ОБ/ОБО, предлог выбирается автоматически;
  • род (gender) — род (мужской, женский или средний);
  • где (gde, where, locative) — в местном падеже (локатив) с предлогом;
  • куда (kuda, where_to) — в направительном падеже (аллатив) с предлогом;
  • откуда (otkuda, where_from, whence) — в исходном падеже (аблатив) с предлогом.

Флаги для разрешения неоднозначностей

Есть слова, которые могут склоняться по-разному, например:

  • фамилия Резник склоняется у мужчин и не склоняется у женщин;
  • Ростов в творительном падеже будет Ростовым, если это фамилия, и Ростовом, если это город;
  • тестер в винительном падеже будет тестера, если это человек, и тестер, если имеется в виду прибор.

Для повышения качества склонения вы можете сообщить веб-сервису дополнительную информацию через флаги. Несколько флагов можно передать через запятую:

morpher.russian.declension('Слепов Сергей Николаевич', Morpher.FLAG_NAME, Morpher.FLAG_MASCULINE).then(
    result => {
      console.log(result['родительный']); // Слепова Сергея Николаевича
      console.log(result.fullName.name);  // Сергей
    }
);

Флаги поддерживаемые для russian.declension(phrase, flags):

  • Morpher.FLAG_FEMININE — Женский род;
  • Morpher.FLAG_MASCULINE — Мужской род;
  • Morpher.FLAG_ANIMATE — Одушевлённое;
  • Morpher.FLAG_INANIMATE — Неодушевлённое;
  • Morpher.FLAG_COMMON — Нарицательное;
  • Morpher.FLAG_NAME — ФИО.

Выделение в строке фамилии, имени и отчества

Если входная строка распознана как ФИО, то объект DeclensionResult будет содержать разбивку строки на фамилию, имя и отчество:

  • родительный (genitive) — ФИО в родительном падеже;
  • дательный (dative) — ФИО в дательном падеже;
  • винительный (accusative) — ФИО в винительном падеже;
  • творительный (instrumental) — ФИО в творительном падеже;
  • предложный (prepositional) — ФИО в предложном падеже;
  • имя (name);
  • фамилия (surname);
  • отчество (patronymic).

Пропись чисел и согласование с числом

Метод russian.spell(number, unit) решает задачу получения прописи числа (тысяча сто двадцать пять) и согласование единицы измерения с предшествующем числом (1 попугай, 2 попугая, 5 попугаев):

morpher.russian.spell(235, 'рубль').then(
    result => {
      console.log(result['n']['родительный']);    // двухсот тридцати пяти
      console.log(result.n.genitive);             // двухсот тридцати пяти

      console.log(result['unit']['родительный']); // рублей
      console.log(result.unit.genitive);          // рублей
    }
);

Комбинируя соответствующие падежные формы n и unit, можно получить вывод «суммы прописью» на любой вкус:

  • 235 рублей
  • Двести тридцать пять рублей
  • 235 (двести тридцать пять) рублей и т.п.

Пропись чисел в виде порядковых числительных

Метод russian.spellOrdinal(number, unit) похож на russian.spell(number, unit), но возвращает пропись числа в форме порядкового числительного:

morpher.russian.spellOrdinal(5, 'колесо').then(
    result => {
      console.log(result['n']['родительный']);    // пятого
      console.log(result['unit']['родительный']); // колеса

      console.log(result.n.genitive);             // пятого
      console.log(result.unit.genitive);          // колеса
    }
);

Пропись дат

Метод russian.spellDate(date) склоняет по падежам дату, заданную в формате ГГГГ-ММ-ДД:

morpher.russian.spellDate('2019-06-29').then(
    result => {
      console.log(result['родительный']);  // двадцать девятого июня две тысячи девятнадцатого года
      console.log(result.genitive);        // двадцать девятого июня две тысячи девятнадцатого года

      console.log(result['творительный']); // двадцать девятому июня две тысячи девятнадцатого года
      console.log(result.instrumental);    // двадцать девятому июня две тысячи девятнадцатого года
    }
);

Склонение прилагательных по родам

Метод russian.adjectiveGenders(adjective) склоняет данное ему прилагательное, преобразуя его из мужского рода в женский, средний и во множественное число:

morpher.russian.adjectiveGenders('уважаемый').then(
    result => {
      console.log(result['женский']);    // уважаемая
      console.log(result.feminine);      // уважаемая

      console.log(result.средний);       // уважаемое
      console.log(result.neuter);        // уважаемое

      console.log(result.множественное); // уважаемые
      console.log(result.plural);        // уважаемые
    }
);

Требования к входному прилагательному:

  • Оно должно быть в мужском роде, в единственном числе.
  • Оно должно быть полным, т.е. "полный", а не "полон".
  • Оно должно быть одним словом. Внутри слова допустимы дефис и апостроф: рабоче-крестьянский, Кот-д'Ивуарский. Вокруг слова допустимы пробелы, кавычки и другие знаки.

Образование прилагательных

Метод russian.adjectivize(lemma) образует прилагательные от названий городов и стран: Москва – московский, Ростов – ростовский, Швеция – шведский, Греция – греческий.

Пример:

morpher.russian.adjectivize('Москва').then(
    result => {
      console.log(result); // ['московский']
    }
);

Метод возвращает массив строк. Что они означают, описано здесь.

Расстановка ударений в текстах

Метод russian.addStressMarks(text) расставляет ударения в текстах на русском языке:

morpher.russian.addStressMarks('Три девицы под окном').then(
    result => {
      console.log(result); // Три деви́цы под окно́м
    }
);

Ударение отмечается символом с кодом U+0301, который вставляется сразу после ударной гласной. Односложные слова не получают знака ударения, за исключением случаев, когда предлог или частица несет на себе ударение: за́ руку, не́ за что. Варианты прочтения разделяются вертикальной чертой, например:

morpher.russian.addStressMarks('Белки питаются белками').then(
    result => {
      console.log(result); // Бе́лки|Белки́ пита́ются бе́лками|белка́ми
    }
);

Склонение по падежам на украинском языке

Украинский вариант склонения — метод ukrainian.declension(phrase, flags):

morpher.ukrainian.declension('Крутько Катерина Володимирiвна').then(
    result => {
      console.log(result['родовий']); // Крутько Катерини Володимирівни
      console.log(result.давальний);  // Крутько Катерині Володимирівні
      console.log(result.vocative);   // Крутько Катерино Володимирівно
    },
);

result — объект DeclensionResult со следующими свойствами:

  • називний (nominative) — текст в именительном падеже;
  • родовий (genitive) — текст в родительном падеже;
  • давальний (dative) — текст в дательном падеже;
  • знахідний (accusative) — текст в винительном падеже;
  • орудний (instrumental) — текст в творительном падеже;
  • місцевий (prepositional) — текст в местном падеже;
  • кличний (vocative) — текст в звательном падеже.

При использовании платного аккаунта на сервисе, определяются дополнительные свойства:

  • рід (gender) — род (чоловічий, жіночий);

Украинская версия пока обрабатывает только имена, фамилии и отчества.

Флаги для разрешения неоднозначностей

morpher.ukrainian.declension('Карен', Morpher.FLAG_FEMININE).then(
    result => {
      console.log(result['родовий']); // Карен (женское имя не склоняется)
    }
);

Флаги поддерживаемые для ukrainian.declension(phrase, flags):

  • Morpher.FLAG_FEMININE — Женский род;
  • Morpher.FLAG_MASCULINE — Мужской род;
  • Morpher.FLAG_NEUTER — Средний род;
  • Morpher.FLAG_PLURAL — Множественное число.

Пропись чисел и согласование с числом на украинском языке

Метод ukrainian.spell(number, unit) решает задачу получения прописи числа (одна тисяча сто двадцять п'ять) и согласование единицы измерения с предшествующем числом (один рубль, два рубля, п'ять рублів):

morpher.ukrainian.spell(235, 'рубль').then(
    result => {
      console.log(result['n']['родовий']);    // двохсот тридцяти п'яти
      console.log(result.n.genitive);         // двохсот тридцяти п'яти

      console.log(result['unit']['родовий']); // рублів
      console.log(result.unit.genitive);      // рублів
    }
);

Склонение по падежам, числам и лицам на казахском языке

Для склонения слов и словосочетаний используется метод qazaq.declension(phrase):

morpher.qazaq.declension('менеджер').then(
    result => {
      console.log(result['ілік']);          // менеджердің
      console.log(result.genitive);         // менеджердің

      console.log(result['көпше']['ілік']); // менеджерлердің
      console.log(result.plural.genitive);  // менеджерлердің

      console.log(result['көпше']['біздің']['ілік']); // менеджерлеріміздің
    }
);

result — объект DeclensionResult со следующими свойствами:

  • атау (nominative) — текст в именительном падеже;
  • ілік (genitive) — текст в родительном падеже;
  • барыс (dative) — текст в дательно-направительном падеже;
  • табыс (accusative) — текст в винительном падеже;
  • шығыс (ablative) — текст в исходном падеже;
  • жатыс (locative) — текст в местном падеже;
  • көмектес (instrumental) — текст в творительном падеже;
  • көпше (plural) — возвращает объект со свойствами-падежами для текста во множественном числе.

Остаток запросов

Метод getQueriesLeft() возвращает остаток запросов на данный момент. Лимит на запросы восстанавливается в 00:00 UTC.

morpher.getQueriesLeft().then(
    result => {
      console.log(result); // 100
    }
);

Получить список исправлений

Для того чтобы получить список всех исправлений, нужно использовать метод russian.userDict.getAll() или ukrainian.userDict.getAll():

morpher.russian.userDict.getAll().then(
    result => {
      console.log(result); // Массив с объектами СorrectionEntry
    }
);

Объект СorrectionEntry со следующими свойствами:

  • singular — объект CorrectionForms с формами в единственном числе;
  • plural — объект CorrectionForms с формами во множественном числе;
  • gender — род (мужской, женский или средний).

Объект CorrectionForms со следующими свойствами:

  • именительный (nominative) — текст в именительном падеже;
  • родительный (genitive) — текст в родительном падеже;
  • дательный (dative) — текст в дательном падеже;
  • винительный (accusative) — текст в винительном падеже;
  • творительный (instrumental) — текст в творительном падеже;
  • предложный (prepositional) — текст в предложном падеже;
  • местный (locative) — текст в местном падеже;

Для украинского языка:

Объект СorrectionEntry со следующими свойствами:

  • singular — объект CorrectionForms с формами в единственном числе;
  • gender — род (чоловічий, жіночий).

Объект CorrectionForms со следующими свойствами:

  • називний (nominative) — текст в именительном падеже;
  • родовий (genitive) — текст в родительном падеже;
  • давальний (dative) — текст в дательном падеже;
  • знахідний (accusative) — текст в винительном падеже;
  • орудний (instrumental) — текст в творительном падеже;
  • місцевий (prepositional) — текст в местном падеже;
  • кличний (vocative) — текст в звательном падеже.

Добавить или изменить исправление

Для добавления или изменения исправления использовать метод russian.userDict.addOrUpdate(entry).

const entry = {
  singular: {
    nominative: 'Кошка',
    dative: 'Пантере',
  },
  plural: {
    dative: 'Пантерам',
  },
};

morpher.russian.userDict.addOrUpdate(entry).then(
    result => {
      console.log(result); // true
    }
);

Для украинского языка:

const entry = {
  singular: {
    nominative: 'Кiшка',
    dative: 'Пантерi',
  },
};

morpher.ukrainian.userDict.addOrUpdate(entry).then(
    result => {
      console.log(result); // true
    }
);

Удаление исправления

Для того чтобы удалить исправление, достаточно передать строку в именительном падеже в метод russian.userDict.remove(nominativeForm):

morpher.russian.userDict.remove('Кошка').then(
    result => {
      console.log(result); // true
    }
);

Для украинского языка:

morpher.ukrainian.userDict.remove('Кiшка').then(
    result => {
      console.log(result); // true
    }
);

Разработка

Node: Убедитесь, что установлена версия Node.js не ниже ^12. Проверить это можно с помощью node -v.

Установка

Сделайте форк репозитория morpher-ws3-js-client.

Затем выполните:

$ git clone https://github.com/<your-github-username>/morpher-ws3-js-client
$ cd morpher-ws3-js-client

Запуск тестов

unit:

$ npm test

e2e:

$ npm run test:e2e

Сборка

$ npm build

Выпуск нового релиза

Примерно через минуту новый пакет должен появиться на npmjs.com, если перед этим были произведены следующие настройки:

На странице настроек в Travis-CI должны быть указаны Environment Variables:

License

MIT