Теля-Авива
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
Внутри него делать разбивку по дефису и искать слово сити в конце. Пока можно захардкодить прям в коде, пока новые исключения не появится.