nodkz / lvovich

Склонение названий городов, определения пола по ФИО, склонения имен по падежам

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Теля-Авива

IVA-apps opened this issue · comments

Павел, доброго здоровьица!)

Проблема с Тель-Авивом и, думаю, другими городами с подобным написанием.

Ещё Куала-Лумпур

А разве есть вообще города, которые до дефиса в названии склоняются?

Айя-Напа
Айия-Напа

Давер-Чесволд

Делта-Джанкшен

Каунсил-Блафс

А сити, кажется и вовсе не склоняются.

прим. Кресента-Сити

К сожалению есть города, которые склоняются до дефиса
https://github.com/nodkz/lvovich/blob/master/src/__tests__/city-test.js#L308-L309

Ростов-на-Дону, Ростове-на-Дону, Ростова-на-Дону, Ростов-на-Дону
Комсомольск-на-Амуре, Комсомольске-на-Амуре, Комсомольска-на-Амуре, Комсомольск-на-Амуре
Каменск-Уральский, Каменске-Уральском, Каменска-Уральского, Каменск-Уральский
Петропавловск-Камчатский, Петропавловске-Камчатском, Петропавловска-Камчатского, Петропавловск-Камчатский

и это только те которые есть в тесте, возможно их гораздо больше.

Я сам не смогу заняться внесением правок. Но вы самостоятельно довольно просто можете это сделать (т.к. код достаточно хорошо покрыт тестами, и отстрелить кому-то ногу, сломав код, будет достаточно сложно):

  • Склонировать репку git clone https://github.com/nodkz/lvovich.git
  • Запустить установку пакетов yarn install
  • Запустить тесты в watch режиме yarn watch
  • Перед коммитом прогнать все тесты yarn test

Сама логика разбивки слов храниться тут https://github.com/nodkz/lvovich/blob/master/src/city.js#L21-L36

А дополнительные правила, по тем частям которые не склоняются находятся здесь https://github.com/nodkz/lvovich/blob/master/src/rules/cityRules.js#L17-L51

Буду очень рад, если у вас получиться внести в код правки, расширить тесты вашими кейсами и открыть Пулл Реквесты.

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

Не сильно разобрался, но как запретить любые склонения если присутствует какая-то часть? Например -сити

Добавить 'сити' в frozenParts
https://github.com/nodkz/lvovich/blob/master/src/rules/cityRules.js#L17-L51

И добавить строку для теста свой города
https://github.com/nodkz/lvovich/blob/master/src/__tests__/city-test.js#L338

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

Согласен, тогда необходимо допилить метод isFrozen:
https://github.com/nodkz/lvovich/blob/master/src/city.js#L22

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