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-ru

v0.1.1

Published

Библиотека для склонения слов и словосочетаний с использованием сервиса Морфер (morpher.ru)

Readme

#morpher-ru

Build Status Coverage Status npm version GitHub license

Библиотека для склонения по падежам слов и словосочетаний на русском языке, использующая веб-сервис "Морфер".

Библиотека позволяет:

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

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

##Установка

npm install morpher-ru --save

##Инициализация библиотеки

Для подключение библиотеки необходимо создать объект Morpher. Конструктор может принимать два аргумента: параметры подключения и объект кеширования.

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

const Morpher = require('morpher-ru');
let morpher = new Morpher();

###Параметры подключения

В качестве первого аргумента можно передать объект с параметрами подключения к сервису:

let morpher = new Morpher({
    hosts: ['api.morpher.ru', 'morpher.ru'],
    login: 'USERNAME',
    password: 'PASSWORD',
    timeout: 10000
});
  • hosts (String, Array[String]) — хосты для подключения к сервису (по умолчанию ['api.morpher.ru', 'morpher.ru']).
  • login, password (String) — имя пользователя и пароль для зарегистрированных пользователей.
  • timeout (Int) — таймаут подключения (по умолчанию 10000). Если в качестве хостов определён массив, то при таймауте, будет произведена попытка отправить запрос следующему хосту.

###Объект кеширования

У сервиса "Морфер" реализован лимит на количество одинаковых запросов в сутки, при превышении которого будет возвращаться ошибка "Превышен лимит на количество одинаковых запросов в сутки. Реализуйте кеширование".

По умолчанию библиотека использует встроенный объект кеширования типа in-memory, кеширующий запросы в память. Вы можете подключить собственный объект кеширования (например, использующий базу данных), передав его в качестве аргумента конструктора.

##API

API библиотеки предоставляет три метода для работы с веб-сервисом "Морфер":

  • declension(text) — для склонения слов и словосочетаний;
  • declensionName(name) — для склонения имён;
  • declensionNumber(number, unit) — для преобразования чисел в прописной вид.

Каждый из этих методов возвращает промис, результатом работы которого будет соответствующий объект: EntityDeclension, EntityName или EntityNumber.

###declension

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

let morpher = new Morpher();

morpher.declension('Программист').then(
    result => {
        console.log(result['именительный']); // Программист
        console.log(result['множественное']['родительный']); // Программистов
    },
    error => console.error(error)
);

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

  • именительный (i, nominativus, кто, что) — текст в именительном падеже;
  • родительный (r, genitivus, кого, чего) — текст в родительном падеже;
  • дательный (d, dativus, кому, чему) — текст в дательном падеже;
  • винительный (v, accusativus) — текст в винительном падеже;
  • творительный (t, ablativus, кем, чем) — текст в творительном падеже;
  • предложный (p, praepositionalis) — текст в предложном падеже;
  • множественное (multiple) — возвращает объект со свойствами-падежами для текста во множественном числе.

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

  • po (о, о ком, о чём) — предложный падёж с предлогом о/об/обо;
  • род (gender) — род (masculine, feminine или neuter);
  • где (gde) — в местном падеже (локатив) с предлогом;
  • куда (kuda) — в направительном падеже (аллатив) с предлогом;
  • откуда (otkuda) — в исходном падеже (аблатив) с предлогом.

###declensionName

Для склонения имён и определения пола используется метод declensionName(name):

let morpher = new Morpher();

morpher.declensionName('Иван Иванович Петров').then(
    result => {
        console.log(result['именительный']); // Петров Иван Иванович
        console.log(result['имя']['именительный']); // Иван
        console.log(result['пол']); // male (только для платных аккаунтов)
    },
    error => console.error(error)
);

Для корректной работы метода, передаваемое полное имя должно содержать как минимум два из следующих идентификаторов:

  • личное имя;
  • фамилия;
  • отчество.

Например: Иван Васильевич Петров, Владимир Сергеевич, Владимир Петров. В результате, возвращаемом методом, имя будет преведено к виду "Фамилия Имя Отчество" (за исключением пропущенных идентификаторов).

Свойства объекта EntityName:

  • именительный (i, nominativus, кто) — имя в именительном падеже;
  • родительный (r, genitivus, кого) — имя в родительном падеже;
  • дательный (d, dativus, кому) — имя в дательном падеже;
  • винительный (v, accusativus) — имя в винительном падеже;
  • творительный (t, ablativus, кем) — имя в творительном падеже;
  • предложный (p, praepositionalis) — имя в предложном падеже;
  • пол (sex) — пол: male|female (только для платных аккаунтов);
  • имя (firstName, first) — личное имя (если определено);
  • фамилия (lastName, last) — фамилия (если определена);
  • отчество (middleName, middle) — отчество (если определено).

Свойства имя, фамилия и отчество возвращают объекты со свойствами-падежами.

###declensionNumber

Метод declensionNumber(number, unit) используется для преобразования числа в прописной вид, а также для согласования единицы измерения с числом:

let morpher = new Morpher();

morpher.declensionNumber(38, 'попугай').then(
    result => {
        console.log(result['именительный']); // тридцать восемь попугаев
        console.log(result['число']['родительный']); // тридцати восьми
        console.log(result['единица измерения']['родительный']); // попугаев
    },
    error => console.error(error)
);

Свойства объекта EntityNumber:

  • именительный (i, nominativus, кто) — число и единица измерения в именительном падеже;
  • родительный (r, genitivus, кого) — число и единица измерения в родительном падеже;
  • дательный (d, dativus, кому) — число и единица измерения в дательном падеже;
  • винительный (v, accusativus) — число и единица измерения в винительном падеже;
  • творительный (t, ablativus, кем) — число и единица измерения в творительном падеже;
  • предложный (p, praepositionalis) — число и единица измерения в предложном падеже;
  • значение (value) — числовое значение типа Integer;
  • число (number) — число прописью;
  • единица измерения (unit) — единица измерения.

Свойства число и единица измерения возвращают объекты со свойствами-падежами.