From 0d9af9b5736a65ac2a5c5e7492806c25de046589 Mon Sep 17 00:00:00 2001 From: Yury Lebedev Date: Sat, 18 Nov 2017 23:50:20 +0300 Subject: [PATCH 1/9] Extend Russian grammar tests --- languages/grammar/ru.json | 18 +++++- test/grammar_test.js | 114 +++++++++++++++++++++++++++++++++++--- 2 files changed, 121 insertions(+), 11 deletions(-) diff --git a/languages/grammar/ru.json b/languages/grammar/ru.json index b6948e7b9..604fcb0ec 100644 --- a/languages/grammar/ru.json +++ b/languages/grammar/ru.json @@ -4,6 +4,8 @@ }, "v5": { "accusative": [ + ["^ [«\"](.+?)[»\"] ", " трасса \"$1\" "], + ["^ (\\S+)ая [Аа]ллея ", " $1ую аллею "], ["^ (\\S+)ья [Аа]ллея ", " $1ью аллею "], ["^ (\\S+)яя [Аа]ллея ", " $1юю аллею "], @@ -55,6 +57,7 @@ ["^ (\\S+)ая [Мм]агистраль ", " $1ую магистраль "], ["^ (\\S+)ья [Мм]агистраль ", " $1ью магистраль "], ["^ (\\S+)яя [Мм]агистраль ", " $1юю магистраль "], + ["^ (\\S+)ая (\\S+)ая [Мм]агистраль ", " $1ую $2ую магистраль "], ["^ (\\d+)-я (\\S+)ая [Мм]агистраль ", " $1-ю $2ую магистраль "], ["^ [Мм]агистраль ", " магистраль "], @@ -82,9 +85,13 @@ ["^ (\\d+)-я (\\S+)ая [Дд]орожка ", " $1-ю $2ую дорожку "], ["^ [Дд]орожка ", " дорожку "], - ["^ (\\S+)ая [Кк]оса ", " $1ую косу "] + ["^ (\\S+)ая [Кк]оса ", " $1ую косу "], + + ["^ [Дд]убл[её]р ", " дублёр "] ], "dative": [ + ["^ [«\"](.+?)[»\"] ", " трасса \"$1\" "], + ["^ (\\S+)ая [Аа]ллея ", " $1ой аллее "], ["^ (\\S+)ья [Аа]ллея ", " $1ьей аллее "], ["^ (\\S+)яя [Аа]ллея ", " $1ей аллее "], @@ -136,6 +143,7 @@ ["^ (\\S+)ая [Мм]агистраль ", " $1ой магистрали "], ["^ (\\S+)ья [Мм]агистраль ", " $1ьей магистрали "], ["^ (\\S+)яя [Мм]агистраль ", " $1ей магистрали "], + ["^ (\\S+)ая (\\S+)ая [Мм]агистраль ", " $1ой $2ой магистрали "], ["^ (\\d+)-я (\\S+)ая [Мм]агистраль ", " $1-й $2ой магистрали "], ["^ [Мм]агистраль ", " магистрали "], @@ -375,6 +383,8 @@ ["([жч])ой ", "$1ей "] ], "genitive": [ + ["^ [«\"](.+?)[»\"] ", " трасса \"$1\" "], + ["^ (\\S+)ая [Аа]ллея ", " $1ой аллеи "], ["^ (\\S+)ья [Аа]ллея ", " $1ьей аллеи "], ["^ (\\S+)яя [Аа]ллея ", " $1ей аллеи "], @@ -426,6 +436,7 @@ ["^ (\\S+)ая [Мм]агистраль ", " $1ой магистрали "], ["^ (\\S+)ья [Мм]агистраль ", " $1ьей магистрали "], ["^ (\\S+)яя [Мм]агистраль ", " $1ей магистрали "], + ["^ (\\S+)ая (\\S+)ая [Мм]агистраль ", " $1ой $2ой магистрали "], ["^ (\\d+)-я (\\S+)ая [Мм]агистраль ", " $1-й $2ой магистрали "], ["^ [Мм]агистраль ", " магистрали "], @@ -664,6 +675,8 @@ ["([жч])ого ", "$1ьего "] ], "prepositional": [ + ["^ [«\"](.+?)[»\"] ", " трасса \"$1\" "], + ["^ (\\S+)ая [Аа]ллея ", " $1ой аллее "], ["^ (\\S+)ья [Аа]ллея ", " $1ьей аллее "], ["^ (\\S+)яя [Аа]ллея ", " $1ей аллее "], @@ -715,6 +728,7 @@ ["^ (\\S+)ая [Мм]агистраль ", " $1ой магистрали "], ["^ (\\S+)ья [Мм]агистраль ", " $1ьей магистрали "], ["^ (\\S+)яя [Мм]агистраль ", " $1ей магистрали "], + ["^ (\\S+)ая (\\S+)ая [Мм]агистраль ", " $1ой $2ой магистрали "], ["^ (\\d+)-я (\\S+)ая [Мм]агистраль ", " $1-й $2ой магистрали "], ["^ [Мм]агистраль ", " магистрали "], @@ -742,7 +756,7 @@ ["^ (\\d+)-я (\\S+)ая [Дд]орожка ", " $1-й $2ой дорожке "], ["^ [Дд]орожка ", " дорожке "], - ["^ (\\S+)во [Пп]оле ", " $1ве поле "], + ["^ (\\S+)во [Пп]оле ", " $1вом поле "], ["^ (\\S+)ая [Кк]оса ", " $1ой косе "], ["^ (\\S+)[иоы]й [Пп]роток ", " $1ом протоке "], diff --git a/test/grammar_test.js b/test/grammar_test.js index acf5bb029..d8473f3c4 100644 --- a/test/grammar_test.js +++ b/test/grammar_test.js @@ -17,10 +17,30 @@ const grammarTests = { ['Малая Зеленина улица', 'dative', 'Малой Зелениной улице'], ['Малая Зеленина улица', 'genitive', 'Малой Зелениной улицы'], ['Малая Зеленина улица', 'prepositional', 'Малой Зелениной улице'], + ['1-я линия В.О.', 'accusative', '1-ю линию В.О.'], + ['1-я линия В.О.', 'dative', '1-й линии В.О.'], + ['1-я линия В.О.', 'genitive', '1-й линии В.О.'], + ['1-я линия В.О.', 'prepositional', '1-й линии В.О.'], ['22-23-я линии В.О.', 'accusative', '22-23-ю линии В.О.'], ['22-23-я линии В.О.', 'dative', '22-23-й линиям В.О.'], ['22-23-я линии В.О.', 'genitive', '22-23-й линий В.О.'], ['22-23-я линии В.О.', 'prepositional', '22-23-й линиях В.О.'], + ['Кушелевская дорога', 'accusative', 'Кушелевскую дорогу'], + ['Кушелевская дорога', 'dative', 'Кушелевской дороге'], + ['Кушелевская дорога', 'genitive', 'Кушелевской дороги'], + ['Кушелевская дорога', 'prepositional', 'Кушелевской дороге'], + ['Петровская коса', 'accusative', 'Петровскую косу'], + ['Петровская коса', 'dative', 'Петровской косе'], + ['Петровская коса', 'genitive', 'Петровской косы'], + ['Петровская коса', 'prepositional', 'Петровской косе'], + ['Лыбедская магистраль', 'accusative', 'Лыбедскую магистраль'], + ['Лыбедская магистраль', 'dative', 'Лыбедской магистрали'], + ['Лыбедская магистраль', 'genitive', 'Лыбедской магистрали'], + ['Лыбедская магистраль', 'prepositional', 'Лыбедской магистрали'], + ['Гайчанская лесовозная магистраль', 'accusative', 'Гайчанскую лесовозную магистраль'], + ['Гайчанская лесовозная магистраль', 'dative', 'Гайчанской лесовозной магистрали'], + ['Гайчанская лесовозная магистраль', 'genitive', 'Гайчанской лесовозной магистрали'], + ['Гайчанская лесовозная магистраль', 'prepositional', 'Гайчанской лесовозной магистрали'], ['Австрийская площадь', 'accusative', 'Австрийскую площадь'], ['Австрийская площадь', 'dative', 'Австрийской площади'], ['Австрийская площадь', 'genitive', 'Австрийской площади'], @@ -29,14 +49,30 @@ const grammarTests = { ['Лялина площадь', 'dative', 'Лялиной площади'], ['Лялина площадь', 'genitive', 'Лялиной площади'], ['Лялина площадь', 'prepositional', 'Лялиной площади'], - ['1-й Тверской-Ямской переулок', 'accusative', '1-й Тверской-Ямской переулок'], - ['1-й Тверской-Ямской переулок', 'dative', '1-му Тверскому-Ямскому переулку'], - ['1-й Тверской-Ямской переулок', 'genitive', '1-го Тверского-Ямского переулка'], - ['1-й Тверской-Ямской переулок', 'prepositional', '1-м Тверском-Ямском переулке'], - ['Большой Сампсониевский проспект', 'accusative', 'Большой Сампсониевский проспект'], - ['Большой Сампсониевский проспект', 'dative', 'Большому Сампсониевскому проспекту'], - ['Большой Сампсониевский проспект', 'genitive', 'Большого Сампсониевского проспекта'], - ['Большой Сампсониевский проспект', 'prepositional', 'Большом Сампсониевском проспекте'], + ['Каштакская развязка', 'accusative', 'Каштакскую развязку'], + ['Каштакская развязка', 'dative', 'Каштакской развязке'], + ['Каштакская развязка', 'genitive', 'Каштакской развязки'], + ['Каштакская развязка', 'prepositional', 'Каштакской развязке'], + ['Шаморовская трасса', 'accusative', 'Шаморовскую трассу'], + ['Шаморовская трасса', 'dative', 'Шаморовской трассе'], + ['Шаморовская трасса', 'genitive', 'Шаморовской трассы'], + ['Шаморовская трасса', 'prepositional', 'Шаморовской трассе'], + ['Самотёчная эстакада', 'accusative', 'Самотёчную эстакаду'], + ['Самотёчная эстакада', 'dative', 'Самотёчной эстакаде'], + ['Самотёчная эстакада', 'genitive', 'Самотёчной эстакады'], + ['Самотёчная эстакада', 'prepositional', 'Самотёчной эстакаде'], + ['Бескудниковский бульвар', 'accusative', 'Бескудниковский бульвар'], + ['Бескудниковский бульвар', 'dative', 'Бескудниковскому бульвару'], + ['Бескудниковский бульвар', 'genitive', 'Бескудниковского бульвара'], + ['Бескудниковский бульвар', 'prepositional', 'Бескудниковском бульваре'], + ['Дублер улицы Энгельса', 'accusative', 'дублёр улицы Энгельса'], + ['Дублер улицы Энгельса', 'dative', 'дублёру улицы Энгельса'], + ['Дублер улицы Энгельса', 'genitive', 'дублёра улицы Энгельса'], + ['Дублер улицы Энгельса', 'prepositional', 'дублёре улицы Энгельса'], + ['Карталинский заезд', 'accusative', 'Карталинский заезд'], + ['Карталинский заезд', 'dative', 'Карталинскому заезду'], + ['Карталинский заезд', 'genitive', 'Карталинского заезда'], + ['Карталинский заезд', 'prepositional', 'Карталинском заезде'], ['Нижний Лебяжий мост', 'accusative', 'Нижний Лебяжий мост'], ['Нижний Лебяжий мост', 'dative', 'Нижнему Лебяжьему мосту'], ['Нижний Лебяжий мост', 'genitive', 'Нижнего Лебяжьего моста'], @@ -49,14 +85,74 @@ const grammarTests = { ['Тучков мост', 'dative', 'Тучкову мосту'], ['Тучков мост', 'genitive', 'Тучкова моста'], ['Тучков мост', 'prepositional', 'Тучковом мосту'], + ['Южный обход', 'accusative', 'Южный обход'], + ['Южный обход', 'dative', 'Южному обходу'], + ['Южный обход', 'genitive', 'Южного обхода'], + ['Южный обход', 'prepositional', 'Южном обходе'], + ['Александровский парк', 'accusative', 'Александровский парк'], + ['Александровский парк', 'dative', 'Александровскому парку'], + ['Александровский парк', 'genitive', 'Александровского парка'], + ['Александровский парк', 'prepositional', 'Александровском парке'], + ['1-й Тверской-Ямской переулок', 'accusative', '1-й Тверской-Ямской переулок'], + ['1-й Тверской-Ямской переулок', 'dative', '1-му Тверскому-Ямскому переулку'], + ['1-й Тверской-Ямской переулок', 'genitive', '1-го Тверского-Ямского переулка'], + ['1-й Тверской-Ямской переулок', 'prepositional', '1-м Тверском-Ямском переулке'], ['Пыхов-Церковный проезд', 'accusative', 'Пыхов-Церковный проезд'], ['Пыхов-Церковный проезд', 'dative', 'Пыхову-Церковному проезду'], ['Пыхов-Церковный проезд', 'genitive', 'Пыхова-Церковного проезда'], ['Пыхов-Церковный проезд', 'prepositional', 'Пыховом-Церковном проезде'], + ['Большой Сампсониевский проспект', 'accusative', 'Большой Сампсониевский проспект'], + ['Большой Сампсониевский проспект', 'dative', 'Большому Сампсониевскому проспекту'], + ['Большой Сампсониевский проспект', 'genitive', 'Большого Сампсониевского проспекта'], + ['Большой Сампсониевский проспект', 'prepositional', 'Большом Сампсониевском проспекте'], + ['Шкиперский проток', 'accusative', 'Шкиперский проток'], + ['Шкиперский проток', 'dative', 'Шкиперскому протоку'], + ['Шкиперский проток', 'genitive', 'Шкиперского протока'], + ['Шкиперский проток', 'prepositional', 'Шкиперском протоке'], + ['Коломяжский путепровод', 'accusative', 'Коломяжский путепровод'], + ['Коломяжский путепровод', 'dative', 'Коломяжскому путепроводу'], + ['Коломяжский путепровод', 'genitive', 'Коломяжского путепровода'], + ['Коломяжский путепровод', 'prepositional', 'Коломяжском путепроводе'], + ['Соборный спуск', 'accusative', 'Соборный спуск'], + ['Соборный спуск', 'dative', 'Соборному спуску'], + ['Соборный спуск', 'genitive', 'Соборного спуска'], + ['Соборный спуск', 'prepositional', 'Соборном спуске'], + ['Печёрский съезд', 'accusative', 'Печёрский съезд'], + ['Печёрский съезд', 'dative', 'Печёрскому съезду'], + ['Печёрский съезд', 'genitive', 'Печёрского съезда'], + ['Печёрский съезд', 'prepositional', 'Печёрском съезде'], + ['Муринский тоннель', 'accusative', 'Муринский тоннель'], + ['Муринский тоннель', 'dative', 'Муринскому тоннелю'], + ['Муринский тоннель', 'genitive', 'Муринского тоннеля'], + ['Муринский тоннель', 'prepositional', 'Муринском тоннеле'], + ['Русско-Полянский тракт', 'accusative', 'Русско-Полянский тракт'], + ['Русско-Полянский тракт', 'dative', 'Русско-Полянскому тракту'], + ['Русско-Полянский тракт', 'genitive', 'Русско-Полянского тракта'], + ['Русско-Полянский тракт', 'prepositional', 'Русско-Полянском тракте'], + ['Басманный тупик', 'accusative', 'Басманный тупик'], + ['Басманный тупик', 'dative', 'Басманному тупику'], + ['Басманный тупик', 'genitive', 'Басманного тупика'], + ['Басманный тупик', 'prepositional', 'Басманном тупике'], ['Третье Транспортное кольцо', 'accusative', 'Третье Транспортное кольцо'], ['Третье Транспортное кольцо', 'dative', 'Третьему Транспортному кольцу'], ['Третье Транспортное кольцо', 'genitive', 'Третьего Транспортного кольца'], - ['Третье Транспортное кольцо', 'prepositional', 'Третьем Транспортном кольце'] + ['Третье Транспортное кольцо', 'prepositional', 'Третьем Транспортном кольце'], + ['«Приморское полукольцо»', 'accusative', 'трассу "Приморское полукольцо"'], + ['«Приморское полукольцо»', 'dative', 'трассе "Приморское полукольцо"'], + ['«Приморское полукольцо»', 'genitive', 'трассы "Приморское полукольцо"'], + ['«Приморское полукольцо»', 'prepositional', 'трассе "Приморское полукольцо"'], + ['Приморское полукольцо', 'accusative', 'Приморское полукольцо'], + ['Приморское полукольцо', 'dative', 'Приморскому полукольцу'], + ['Приморское полукольцо', 'genitive', 'Приморского полукольца'], + ['Приморское полукольцо', 'prepositional', 'Приморском полукольце'], + ['Марсово поле', 'accusative', 'Марсово поле'], + ['Марсово поле', 'dative', 'Марсову полю'], + ['Марсово поле', 'genitive', 'Марсова поля'], + ['Марсово поле', 'prepositional', 'Марсовом поле'], + ['Приморское шоссе', 'accusative', 'Приморское шоссе'], + ['Приморское шоссе', 'dative', 'Приморскому шоссе'], + ['Приморское шоссе', 'genitive', 'Приморского шоссе'], + ['Приморское шоссе', 'prepositional', 'Приморском шоссе'] ] // TODO add your language grammar tests to call grammarize() and check result }; From adfbc153d46fd809ce4335824f08068b5dbe6c47 Mon Sep 17 00:00:00 2001 From: Yury Lebedev Date: Tue, 5 Dec 2017 12:24:15 +0300 Subject: [PATCH 2/9] More ordinals in Russian street names --- languages/grammar/ru.json | 10 ++++++++++ test/grammar_test.js | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/languages/grammar/ru.json b/languages/grammar/ru.json index 604fcb0ec..fddf5e3de 100644 --- a/languages/grammar/ru.json +++ b/languages/grammar/ru.json @@ -16,6 +16,7 @@ ["^ (\\S+)ая [Уу]лица ", " $1ую улицу "], ["^ (\\S+)ья [Уу]лица ", " $1ью улицу "], ["^ (\\S+)яя [Уу]лица ", " $1юю улицу "], + ["^ (\\d+)-я [Уу]лица ", " $1-ю улицу "], ["^ (\\d+)-я (\\S+)ая [Уу]лица ", " $1-ю $2ую улицу "], ["^ (\\S+)ая (\\S+)ая [Уу]лица ", " $1ую $2ую улицу "], ["^ (\\S+[вн])а [Уу]лица ", " $1у улицу "], @@ -102,6 +103,7 @@ ["^ (\\S+)ая [Уу]лица ", " $1ой улице "], ["^ (\\S+)ья [Уу]лица ", " $1ьей улице "], ["^ (\\S+)яя [Уу]лица ", " $1ей улице "], + ["^ (\\d+)-я [Уу]лица ", " $1-й улице "], ["^ (\\d+)-я (\\S+)ая [Уу]лица ", " $1-й $2ой улице "], ["^ (\\S+)ая (\\S+)ая [Уу]лица ", " $1ой $2ой улице "], ["^ (\\S+[вн])а [Уу]лица ", " $1ой улице "], @@ -246,6 +248,7 @@ ["^ (\\S+)[иоы]й (\\S+)[иоы]й [Пп]ереулок ", " $1ому $2ому переулку "], ["^ (\\S+)[иоы]й (\\S+[еёо]в) [Пп]ереулок ", " $1ому $2у переулку "], ["^ (\\S+)[иоы]й (\\S+[иы]н) [Пп]ереулок ", " $1ому $2у переулку "], + ["^ (\\d+)-й [Пп]ереулок ", " $1-му переулку "], ["^ (\\d+)-й (\\S+н)ий [Пп]ереулок ", " $1-му $2ему переулку "], ["^ (\\d+)-й (\\S+)[иоы]й [Пп]ереулок ", " $1-му $2ому переулку "], ["^ (\\d+)-й (\\S+[еёо]в) [Пп]ереулок ", " $1-му $2у переулку "], @@ -264,6 +267,7 @@ ["^ (\\S+)[иоы]й (\\S+)[иоы]й [Пп]роезд ", " $1ому $2ому проезду "], ["^ (\\S+)[иоы]й (\\S+[еёо]в) [Пп]роезд ", " $1ому $2у проезду "], ["^ (\\S+)[иоы]й (\\S+[иы]н) [Пп]роезд ", " $1ому $2у проезду "], + ["^ (\\d+)-й [Пп]роезд ", " $1-му проезду "], ["^ (\\d+)-й (\\S+н)ий [Пп]роезд ", " $1-му $2ему проезду "], ["^ (\\d+)-й (\\S+)[иоы]й [Пп]роезд ", " $1-му $2ому проезду "], ["^ (\\d+)-й (\\S+[еёо]в) [Пп]роезд ", " $1-му $2у проезду "], @@ -395,6 +399,7 @@ ["^ (\\S+)ая [Уу]лица ", " $1ой улицы "], ["^ (\\S+)ья [Уу]лица ", " $1ьей улицы "], ["^ (\\S+)яя [Уу]лица ", " $1ей улицы "], + ["^ (\\d+)-я [Уу]лица ", " $1-й улицы "], ["^ (\\d+)-я (\\S+)ая [Уу]лица ", " $1-й $2ой улицы "], ["^ (\\S+)ая (\\S+)ая [Уу]лица ", " $1ой $2ой улицы "], ["^ (\\S+[вн])а [Уу]лица ", " $1ой улицы "], @@ -539,6 +544,7 @@ ["^ (\\S+)[иоы]й (\\S+)[иоы]й [Пп]ереулок ", " $1ого $2ого переулка "], ["^ (\\S+)[иоы]й (\\S+[еёо]в) [Пп]ереулок ", " $1ого $2а переулка "], ["^ (\\S+)[иоы]й (\\S+[иы]н) [Пп]ереулок ", " $1ого $2а переулка "], + ["^ (\\d+)-й [Пп]ереулок ", " $1-го переулка "], ["^ (\\d+)-й (\\S+н)ий [Пп]ереулок ", " $1-го $2его переулка "], ["^ (\\d+)-й (\\S+)[иоы]й [Пп]ереулок ", " $1-го $2ого переулка "], ["^ (\\d+)-й (\\S+[еёо]в) [Пп]ереулок ", " $1-го $2а переулка "], @@ -557,6 +563,7 @@ ["^ (\\S+)[иоы]й (\\S+)[иоы]й [Пп]роезд ", " $1ого $2ого проезда "], ["^ (\\S+)[иоы]й (\\S+[еёо]в) [Пп]роезд ", " $1ого $2а проезда "], ["^ (\\S+)[иоы]й (\\S+[иы]н) [Пп]роезд ", " $1ого $2а проезда "], + ["^ (\\d+)-й [Пп]роезд ", " $1-го проезда "], ["^ (\\d+)-й (\\S+н)ий [Пп]роезд ", " $1-го $2его проезда "], ["^ (\\d+)-й (\\S+)[иоы]й [Пп]роезд ", " $1-го $2ого проезда "], ["^ (\\d+)-й (\\S+[еёо]в) [Пп]роезд ", " $1-го $2а проезда "], @@ -687,6 +694,7 @@ ["^ (\\S+)ая [Уу]лица ", " $1ой улице "], ["^ (\\S+)ья [Уу]лица ", " $1ьей улице "], ["^ (\\S+)яя [Уу]лица ", " $1ей улице "], + ["^ (\\d+)-я [Уу]лица ", " $1-й улице "], ["^ (\\d+)-я (\\S+)ая [Уу]лица ", " $1-й $2ой улице "], ["^ (\\S+)ая (\\S+)ая [Уу]лица ", " $1ой $2ой улице "], ["^ (\\S+[вн])а [Уу]лица ", " $1ой улице "], @@ -831,6 +839,7 @@ ["^ (\\S+)[иоы]й (\\S+)[иоы]й [Пп]ереулок ", " $1ом $2ом переулке "], ["^ (\\S+)[иоы]й (\\S+[еёо]в) [Пп]ереулок ", " $1ом $2ом переулке "], ["^ (\\S+)[иоы]й (\\S+[иы]н) [Пп]ереулок ", " $1ом $2ом переулке "], + ["^ (\\d+)-й [Пп]ереулок ", " $1-м переулке "], ["^ (\\d+)-й (\\S+н)ий [Пп]ереулок ", " $1-м $2ем переулке "], ["^ (\\d+)-й (\\S+)[иоы]й [Пп]ереулок ", " $1-м $2ом переулке "], ["^ (\\d+)-й (\\S+[еёо]в) [Пп]ереулок ", " $1-м $2ом переулке "], @@ -849,6 +858,7 @@ ["^ (\\S+)[иоы]й (\\S+)[иоы]й [Пп]роезд ", " $1ом $2ом проезде "], ["^ (\\S+)[иоы]й (\\S+[еёо]в) [Пп]роезд ", " $1ом $2ом проезде "], ["^ (\\S+)[иоы]й (\\S+[иы]н) [Пп]роезд ", " $1ом $2ом проезде "], + ["^ (\\d+)-й [Пп]роезд ", " $1-м проезде "], ["^ (\\d+)-й (\\S+н)ий [Пп]роезд ", " $1-м $2ем проезде "], ["^ (\\d+)-й (\\S+)[иоы]й [Пп]роезд ", " $1-м $2ом проезде "], ["^ (\\d+)-й (\\S+[еёо]в) [Пп]роезд ", " $1-м $2ом проезде "], diff --git a/test/grammar_test.js b/test/grammar_test.js index d8473f3c4..339608153 100644 --- a/test/grammar_test.js +++ b/test/grammar_test.js @@ -17,6 +17,10 @@ const grammarTests = { ['Малая Зеленина улица', 'dative', 'Малой Зелениной улице'], ['Малая Зеленина улица', 'genitive', 'Малой Зелениной улицы'], ['Малая Зеленина улица', 'prepositional', 'Малой Зелениной улице'], + ['2-я улица Труда', 'accusative', '2-ю улицу Труда'], + ['2-я улица Труда', 'dative', '2-й улице Труда'], + ['2-я улица Труда', 'genitive', '2-й улицы Труда'], + ['2-я улица Труда', 'prepositional', '2-й улице Труда'], ['1-я линия В.О.', 'accusative', '1-ю линию В.О.'], ['1-я линия В.О.', 'dative', '1-й линии В.О.'], ['1-я линия В.О.', 'genitive', '1-й линии В.О.'], @@ -97,14 +101,30 @@ const grammarTests = { ['1-й Тверской-Ямской переулок', 'dative', '1-му Тверскому-Ямскому переулку'], ['1-й Тверской-Ямской переулок', 'genitive', '1-го Тверского-Ямского переулка'], ['1-й Тверской-Ямской переулок', 'prepositional', '1-м Тверском-Ямском переулке'], + ['3-й переулок', 'accusative', '3-й переулок'], + ['3-й переулок', 'dative', '3-му переулку'], + ['3-й переулок', 'genitive', '3-го переулка'], + ['3-й переулок', 'prepositional', '3-м переулке'], ['Пыхов-Церковный проезд', 'accusative', 'Пыхов-Церковный проезд'], ['Пыхов-Церковный проезд', 'dative', 'Пыхову-Церковному проезду'], ['Пыхов-Церковный проезд', 'genitive', 'Пыхова-Церковного проезда'], ['Пыхов-Церковный проезд', 'prepositional', 'Пыховом-Церковном проезде'], + ['2-й Поперечный проезд', 'accusative', '2-й Поперечный проезд'], + ['2-й Поперечный проезд', 'dative', '2-му Поперечному проезду'], + ['2-й Поперечный проезд', 'genitive', '2-го Поперечного проезда'], + ['2-й Поперечный проезд', 'prepositional', '2-м Поперечном проезде'], + ['4-й проезд', 'accusative', '4-й проезд'], + ['4-й проезд', 'dative', '4-му проезду'], + ['4-й проезд', 'genitive', '4-го проезда'], + ['4-й проезд', 'prepositional', '4-м проезде'], ['Большой Сампсониевский проспект', 'accusative', 'Большой Сампсониевский проспект'], ['Большой Сампсониевский проспект', 'dative', 'Большому Сампсониевскому проспекту'], ['Большой Сампсониевский проспект', 'genitive', 'Большого Сампсониевского проспекта'], ['Большой Сампсониевский проспект', 'prepositional', 'Большом Сампсониевском проспекте'], + ['проспект Испытателей', 'accusative', 'проспект Испытателей'], + ['проспект Испытателей', 'dative', 'проспекту Испытателей'], + ['проспект Испытателей', 'genitive', 'проспекта Испытателей'], + ['проспект Испытателей', 'prepositional', 'проспекте Испытателей'], ['Шкиперский проток', 'accusative', 'Шкиперский проток'], ['Шкиперский проток', 'dative', 'Шкиперскому протоку'], ['Шкиперский проток', 'genitive', 'Шкиперского протока'], From c5e7406cbe537328adb482a7cacf3e4c7ba36b74 Mon Sep 17 00:00:00 2001 From: Yury Lebedev Date: Sun, 10 Dec 2017 22:06:39 +0300 Subject: [PATCH 3/9] Handle "road" with 2 adjectives --- languages/grammar/ru.json | 4 ++++ test/grammar_test.js | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/languages/grammar/ru.json b/languages/grammar/ru.json index fddf5e3de..c9f75f939 100644 --- a/languages/grammar/ru.json +++ b/languages/grammar/ru.json @@ -77,6 +77,7 @@ ["^ (\\S+)ая ([Аа]вто)?[Дд]орога ", " $1ую $2дорогу "], ["^ (\\S+)ья ([Аа]вто)?[Дд]орога ", " $1ью $2дорогу "], ["^ (\\S+)яя ([Аа]вто)?[Дд]орога ", " $1юю $2дорогу "], + ["^ (\\S+)ая (\\S+)ая ([Аа]вто)?[Дд]орога ", " $1ую $2ую $3дорогу "], ["^ (\\d+)-я (\\S+)ая ([Аа]вто)?[Дд]орога ", " $1-ю $2ую $3дорогу "], ["^ ([Аа]вто)?[Дд]орога ", " $1дорогу "], @@ -164,6 +165,7 @@ ["^ (\\S+)ая ([Аа]вто)?[Дд]орога ", " $1ой $2дороге "], ["^ (\\S+)ья ([Аа]вто)?[Дд]орога ", " $1ьей $2дороге "], ["^ (\\S+)яя ([Аа]вто)?[Дд]орога ", " $1ей $2дороге "], + ["^ (\\S+)ая (\\S+)ая ([Аа]вто)?[Дд]орога ", " $1ой $2ой $3дороге "], ["^ (\\d+)-я (\\S+)ая ([Аа]вто)?[Дд]орога ", " $1-й $2ой $3дороге "], ["^ ([Аа]вто)?[Дд]орога ", " $1дороге "], @@ -460,6 +462,7 @@ ["^ (\\S+)ая ([Аа]вто)?[Дд]орога ", " $1ой $2дороги "], ["^ (\\S+)ья ([Аа]вто)?[Дд]орога ", " $1ьей $2дороги "], ["^ (\\S+)яя ([Аа]вто)?[Дд]орога ", " $1ей $2дороги "], + ["^ (\\S+)ая (\\S+)ая ([Аа]вто)?[Дд]орога ", " $1ой $2ой $3дороги "], ["^ (\\d+)-я (\\S+)ая ([Аа]вто)?[Дд]орога ", " $1-й $2ой $3дороги "], ["^ ([Аа]вто)?[Дд]орога ", " $1дороги "], @@ -755,6 +758,7 @@ ["^ (\\S+)ая ([Аа]вто)?[Дд]орога ", " $1ой $2дороге "], ["^ (\\S+)ья ([Аа]вто)?[Дд]орога ", " $1ьей $2дороге "], ["^ (\\S+)яя ([Аа]вто)?[Дд]орога ", " $1ей $2дороге "], + ["^ (\\S+)ая (\\S+)ая ([Аа]вто)?[Дд]орога ", " $1ой $2ой $3дороге "], ["^ (\\d+)-я (\\S+)ая ([Аа]вто)?[Дд]орога ", " $1-й $2ой $3дороге "], ["^ ([Аа]вто)?[Дд]орога ", " $1дороге "], diff --git a/test/grammar_test.js b/test/grammar_test.js index 339608153..16775f401 100644 --- a/test/grammar_test.js +++ b/test/grammar_test.js @@ -33,6 +33,10 @@ const grammarTests = { ['Кушелевская дорога', 'dative', 'Кушелевской дороге'], ['Кушелевская дорога', 'genitive', 'Кушелевской дороги'], ['Кушелевская дорога', 'prepositional', 'Кушелевской дороге'], + ['Юго-западная окружная дорога', 'accusative', 'Юго-западную окружную дорогу'], + ['Юго-западная окружная дорога', 'dative', 'Юго-западной окружной дороге'], + ['Юго-западная окружная дорога', 'genitive', 'Юго-западной окружной дороги'], + ['Юго-западная окружная дорога', 'prepositional', 'Юго-западной окружной дороге'], ['Петровская коса', 'accusative', 'Петровскую косу'], ['Петровская коса', 'dative', 'Петровской косе'], ['Петровская коса', 'genitive', 'Петровской косы'], From 8dcd9398b44c10950cb67112527addac5c27f666 Mon Sep 17 00:00:00 2001 From: Yury Lebedev Date: Tue, 12 Dec 2017 23:39:44 +0300 Subject: [PATCH 4/9] More ordinals for bridges --- languages/grammar/ru.json | 3 +++ test/grammar_test.js | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/languages/grammar/ru.json b/languages/grammar/ru.json index c9f75f939..22cbb7528 100644 --- a/languages/grammar/ru.json +++ b/languages/grammar/ru.json @@ -217,6 +217,7 @@ ["^ (\\S+)[иоы]й (\\S+)[иоы]й [Мм]ост ", " $1ому $2ому мосту "], ["^ (\\S+)[иоы]й (\\S+[еёо]в) [Мм]ост ", " $1ому $2у мосту "], ["^ (\\S+)[иоы]й (\\S+[иы]н) [Мм]ост ", " $1ому $2у мосту "], + ["^ (\\d+)-й [Мм]ост ", " $1-му мосту "], ["^ (\\d+)-й (\\S+н)ий [Мм]ост ", " $1-му $2ему мосту "], ["^ (\\d+)-й (\\S+)[иоы]й [Мм]ост ", " $1-му $2ому мосту "], ["^ (\\d+)-й (\\S+[еёо]в) [Мм]ост ", " $1-му $2у мосту "], @@ -514,6 +515,7 @@ ["^ (\\S+)[иоы]й (\\S+)[иоы]й [Мм]ост ", " $1ого $2ого моста "], ["^ (\\S+)[иоы]й (\\S+[еёо]в) [Мм]ост ", " $1ого $2а моста "], ["^ (\\S+)[иоы]й (\\S+[иы]н) [Мм]ост ", " $1ого $2а моста "], + ["^ (\\d+)-й [Мм]ост ", " $1-го моста "], ["^ (\\d+)-й (\\S+н)ий [Мм]ост ", " $1-го $2его моста "], ["^ (\\d+)-й (\\S+)[иоы]й [Мм]ост ", " $1-го $2ого моста "], ["^ (\\d+)-й (\\S+[еёо]в) [Мм]ост ", " $1-го $2а моста "], @@ -810,6 +812,7 @@ ["^ (\\S+)[иоы]й (\\S+)[иоы]й [Мм]ост ", " $1ом $2ом мосту "], ["^ (\\S+)[иоы]й (\\S+[еёо]в) [Мм]ост ", " $1ом $2ом мосту "], ["^ (\\S+)[иоы]й (\\S+[иы]н) [Мм]ост ", " $1ом $2ом мосту "], + ["^ (\\d+)-й [Мм]ост ", " $1-м мосту "], ["^ (\\d+)-й (\\S+н)ий [Мм]ост ", " $1-м $2ем мосту "], ["^ (\\d+)-й (\\S+)[иоы]й [Мм]ост ", " $1-м $2ом мосту "], ["^ (\\d+)-й (\\S+[еёо]в) [Мм]ост ", " $1-м $2ом мосту "], diff --git a/test/grammar_test.js b/test/grammar_test.js index 16775f401..e860b3080 100644 --- a/test/grammar_test.js +++ b/test/grammar_test.js @@ -81,6 +81,14 @@ const grammarTests = { ['Карталинский заезд', 'dative', 'Карталинскому заезду'], ['Карталинский заезд', 'genitive', 'Карталинского заезда'], ['Карталинский заезд', 'prepositional', 'Карталинском заезде'], + ['1-й Инженерный мост', 'accusative', '1-й Инженерный мост'], + ['1-й Инженерный мост', 'dative', '1-му Инженерному мосту'], + ['1-й Инженерный мост', 'genitive', '1-го Инженерного моста'], + ['1-й Инженерный мост', 'prepositional', '1-м Инженерном мосту'], + ['2-й мост Круштейна', 'accusative', '2-й мост Круштейна'], + ['2-й мост Круштейна', 'dative', '2-му мосту Круштейна'], + ['2-й мост Круштейна', 'genitive', '2-го моста Круштейна'], + ['2-й мост Круштейна', 'prepositional', '2-м мосту Круштейна'], ['Нижний Лебяжий мост', 'accusative', 'Нижний Лебяжий мост'], ['Нижний Лебяжий мост', 'dative', 'Нижнему Лебяжьему мосту'], ['Нижний Лебяжий мост', 'genitive', 'Нижнего Лебяжьего моста'], From e9d86ea21751507deaef2716592960fbbf5dbc78 Mon Sep 17 00:00:00 2001 From: Yury Lebedev Date: Mon, 18 Dec 2017 00:10:06 +0300 Subject: [PATCH 5/9] Ordinals for ends, rotaries and highways --- languages/grammar/ru.json | 11 +++++++---- test/grammar_test.js | 8 ++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/languages/grammar/ru.json b/languages/grammar/ru.json index 22cbb7528..5bf6a7476 100644 --- a/languages/grammar/ru.json +++ b/languages/grammar/ru.json @@ -364,6 +364,7 @@ ["^ (\\S+)[иоы]й (\\S+)[иоы]й [Тт]упик ", " $1ому $2ому тупику "], ["^ (\\S+)[иоы]й (\\S+[еёо]в) [Тт]упик ", " $1ому $2у тупику "], ["^ (\\S+)[иоы]й (\\S+[иы]н) [Тт]упик ", " $1ому $2у тупику "], + ["^ (\\d+)-й [Тт]упик ", " $1-му тупику "], ["^ (\\d+)-й (\\S+н)ий [Тт]упик ", " $1-му $2ему тупику "], ["^ (\\d+)-й (\\S+)[иоы]й [Тт]упик ", " $1-му $2ому тупику "], ["^ (\\d+)-й (\\S+[еёо]в) [Тт]упик ", " $1-му $2у тупику "], @@ -374,16 +375,16 @@ ["^ (\\S+ье) ([Пп]олу)?[Кк]ольцо ", " $1му $2кольцу "], ["^ (\\S+[ео])е (\\S+[ео])е ([Пп]олу)?[Кк]ольцо ", " $1му $2му $3кольцу "], ["^ (\\S+ье) (\\S+[ео])е ([Пп]олу)?[Кк]ольцо ", " $1му $2му $3кольцу "], - ["^ (\\d+)-е (\\S+[ео])е ([Пп]олу)?[Кк]ольцо ", " $1му $2му $3кольцу "], - ["^ (\\d+)-е (\\S+ье) ([Пп]олу)?[Кк]ольцо ", " $1му $2му $3кольцу "], + ["^ (\\d+)-е (\\S+[ео])е ([Пп]олу)?[Кк]ольцо ", " $1-му $2му $3кольцу "], + ["^ (\\d+)-е (\\S+ье) ([Пп]олу)?[Кк]ольцо ", " $1-му $2му $3кольцу "], ["^ ([Пп]олу)?[Кк]ольцо ", " $1кольцу "], ["^ (\\S+[ео])е [Шш]оссе ", " $1му шоссе "], ["^ (\\S+ье) [Шш]оссе ", " $1му шоссе "], ["^ (\\S+[ео])е (\\S+[ео])е [Шш]оссе ", " $1му $2му шоссе "], ["^ (\\S+ье) (\\S+[ео])е [Шш]оссе ", " $1му $2му шоссе "], - ["^ (\\d+)-е (\\S+[ео])е [Шш]оссе ", " $1му $2му шоссе "], - ["^ (\\d+)-е (\\S+ье) [Шш]оссе ", " $1му $2му шоссе "], + ["^ (\\d+)-е (\\S+[ео])е [Шш]оссе ", " $1-му $2му шоссе "], + ["^ (\\d+)-е (\\S+ье) [Шш]оссе ", " $1-му $2му шоссе "], [" ([Тт])ретому ", " $1ретьему "], ["([жч])ому ", "$1ьему "], @@ -662,6 +663,7 @@ ["^ (\\S+)[иоы]й (\\S+)[иоы]й [Тт]упик ", " $1ого $2ого тупика "], ["^ (\\S+)[иоы]й (\\S+[еёо]в) [Тт]упик ", " $1ого $2а тупика "], ["^ (\\S+)[иоы]й (\\S+[иы]н) [Тт]упик ", " $1ого $2а тупика "], + ["^ (\\d+)-й [Тт]упик ", " $1-го тупика "], ["^ (\\d+)-й (\\S+н)ий [Тт]упик ", " $1-го $2его тупика "], ["^ (\\d+)-й (\\S+)[иоы]й [Тт]упик ", " $1-го $2ого тупика "], ["^ (\\d+)-й (\\S+[еёо]в) [Тт]упик ", " $1-го $2а тупика "], @@ -959,6 +961,7 @@ ["^ (\\S+)[иоы]й (\\S+)[иоы]й [Тт]упик ", " $1ом $2ом тупике "], ["^ (\\S+)[иоы]й (\\S+[еёо]в) [Тт]упик ", " $1ом $2ом тупике "], ["^ (\\S+)[иоы]й (\\S+[иы]н) [Тт]упик ", " $1ом $2ом тупике "], + ["^ (\\d+)-й [Тт]упик ", " $1-м тупике "], ["^ (\\d+)-й (\\S+н)ий [Тт]упик ", " $1-м $2ем тупике "], ["^ (\\d+)-й (\\S+)[иоы]й [Тт]упик ", " $1-м $2ом тупике "], ["^ (\\d+)-й (\\S+[еёо]в) [Тт]упик ", " $1-м $2ом тупике "], diff --git a/test/grammar_test.js b/test/grammar_test.js index e860b3080..92b9b3f08 100644 --- a/test/grammar_test.js +++ b/test/grammar_test.js @@ -161,6 +161,10 @@ const grammarTests = { ['Русско-Полянский тракт', 'dative', 'Русско-Полянскому тракту'], ['Русско-Полянский тракт', 'genitive', 'Русско-Полянского тракта'], ['Русско-Полянский тракт', 'prepositional', 'Русско-Полянском тракте'], + ['1-й тупик Кангас', 'accusative', '1-й тупик Кангас'], + ['1-й тупик Кангас', 'dative', '1-му тупику Кангас'], + ['1-й тупик Кангас', 'genitive', '1-го тупика Кангас'], + ['1-й тупик Кангас', 'prepositional', '1-м тупике Кангас'], ['Басманный тупик', 'accusative', 'Басманный тупик'], ['Басманный тупик', 'dative', 'Басманному тупику'], ['Басманный тупик', 'genitive', 'Басманного тупика'], @@ -181,6 +185,10 @@ const grammarTests = { ['Марсово поле', 'dative', 'Марсову полю'], ['Марсово поле', 'genitive', 'Марсова поля'], ['Марсово поле', 'prepositional', 'Марсовом поле'], + ['1-е Успенское шоссе', 'accusative', '1-е Успенское шоссе'], + ['1-е Успенское шоссе', 'dative', '1-му Успенскому шоссе'], + ['1-е Успенское шоссе', 'genitive', '1-го Успенского шоссе'], + ['1-е Успенское шоссе', 'prepositional', '1-м Успенском шоссе'], ['Приморское шоссе', 'accusative', 'Приморское шоссе'], ['Приморское шоссе', 'dative', 'Приморскому шоссе'], ['Приморское шоссе', 'genitive', 'Приморского шоссе'], From 7fe63a463b2a7134554d5a589ff2288dcb3b7a95 Mon Sep 17 00:00:00 2001 From: Yury Lebedev Date: Mon, 18 Dec 2017 23:48:03 +0300 Subject: [PATCH 6/9] Drives with ordinal and 2 adjectives --- languages/grammar/ru.json | 6 ++++++ test/grammar_test.js | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/languages/grammar/ru.json b/languages/grammar/ru.json index 5bf6a7476..f73edff3d 100644 --- a/languages/grammar/ru.json +++ b/languages/grammar/ru.json @@ -275,6 +275,8 @@ ["^ (\\d+)-й (\\S+)[иоы]й [Пп]роезд ", " $1-му $2ому проезду "], ["^ (\\d+)-й (\\S+[еёо]в) [Пп]роезд ", " $1-му $2у проезду "], ["^ (\\d+)-й (\\S+[иы]н) [Пп]роезд ", " $1-му $2у проезду "], + ["^ (\\d+)-й (\\S+н)ий (\\S+)[иоы]й [Пп]роезд ", " $1-му $2ему $3ому проезду "], + ["^ (\\d+)-й (\\S+)[иоы]й (\\S+)[иоы]й [Пп]роезд ", " $1-му $2ому $3ому проезду "], ["^ [Пп]роезд ", " проезду "], ["^ (\\S+н)ий [Пп]роспект ", " $1ему проспекту "], @@ -574,6 +576,8 @@ ["^ (\\d+)-й (\\S+)[иоы]й [Пп]роезд ", " $1-го $2ого проезда "], ["^ (\\d+)-й (\\S+[еёо]в) [Пп]роезд ", " $1-го $2а проезда "], ["^ (\\d+)-й (\\S+[иы]н) [Пп]роезд ", " $1-го $2а проезда "], + ["^ (\\d+)-й (\\S+н)ий (\\S+)[иоы]й [Пп]роезд ", " $1-го $2его $3ого проезда "], + ["^ (\\d+)-й (\\S+)[иоы]й (\\S+)[иоы]й [Пп]роезд ", " $1-го $2ого $3ого проезда "], ["^ [Пп]роезд ", " проезда "], ["^ (\\S+н)ий [Пп]роспект ", " $1его проспекта "], @@ -872,6 +876,8 @@ ["^ (\\d+)-й (\\S+)[иоы]й [Пп]роезд ", " $1-м $2ом проезде "], ["^ (\\d+)-й (\\S+[еёо]в) [Пп]роезд ", " $1-м $2ом проезде "], ["^ (\\d+)-й (\\S+[иы]н) [Пп]роезд ", " $1-м $2ом проезде "], + ["^ (\\d+)-й (\\S+н)ий (\\S+)[иоы]й [Пп]роезд ", " $1-м $2ем $3ом проезде "], + ["^ (\\d+)-й (\\S+)[иоы]й (\\S+)[иоы]й [Пп]роезд ", " $1-м $2ом $3ом проезде "], ["^ [Пп]роезд ", " проезде "], ["^ (\\S+н)ий [Пп]роспект ", " $1ем проспекте "], diff --git a/test/grammar_test.js b/test/grammar_test.js index 92b9b3f08..ad1ac382e 100644 --- a/test/grammar_test.js +++ b/test/grammar_test.js @@ -125,6 +125,14 @@ const grammarTests = { ['2-й Поперечный проезд', 'dative', '2-му Поперечному проезду'], ['2-й Поперечный проезд', 'genitive', '2-го Поперечного проезда'], ['2-й Поперечный проезд', 'prepositional', '2-м Поперечном проезде'], + ['10-й Нижний Просветительский проезд', 'accusative', '10-й Нижний Просветительский проезд'], + ['10-й Нижний Просветительский проезд', 'dative', '10-му Нижнему Просветительскому проезду'], + ['10-й Нижний Просветительский проезд', 'genitive', '10-го Нижнего Просветительского проезда'], + ['10-й Нижний Просветительский проезд', 'prepositional', '10-м Нижнем Просветительском проезде'], + ['2-й Малый Приморский проезд', 'accusative', '2-й Малый Приморский проезд'], + ['2-й Малый Приморский проезд', 'dative', '2-му Малому Приморскому проезду'], + ['2-й Малый Приморский проезд', 'genitive', '2-го Малого Приморского проезда'], + ['2-й Малый Приморский проезд', 'prepositional', '2-м Малом Приморском проезде'], ['4-й проезд', 'accusative', '4-й проезд'], ['4-й проезд', 'dative', '4-му проезду'], ['4-й проезд', 'genitive', '4-го проезда'], From 03111d1baf8f172eea62a28f7ac05825764b4ad9 Mon Sep 17 00:00:00 2001 From: Yury Lebedev Date: Thu, 18 Jan 2018 22:57:44 +0300 Subject: [PATCH 7/9] Keep original quotes style --- languages/grammar/ru.json | 8 ++++---- test/grammar_test.js | 12 ++++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/languages/grammar/ru.json b/languages/grammar/ru.json index f73edff3d..765166f45 100644 --- a/languages/grammar/ru.json +++ b/languages/grammar/ru.json @@ -4,7 +4,7 @@ }, "v5": { "accusative": [ - ["^ [«\"](.+?)[»\"] ", " трасса \"$1\" "], + ["^ ([«\"])", " трасса $1"], ["^ (\\S+)ая [Аа]ллея ", " $1ую аллею "], ["^ (\\S+)ья [Аа]ллея ", " $1ью аллею "], @@ -92,7 +92,7 @@ ["^ [Дд]убл[её]р ", " дублёр "] ], "dative": [ - ["^ [«\"](.+?)[»\"] ", " трасса \"$1\" "], + ["^ ([«\"])", " трасса $1"], ["^ (\\S+)ая [Аа]ллея ", " $1ой аллее "], ["^ (\\S+)ья [Аа]ллея ", " $1ьей аллее "], @@ -393,7 +393,7 @@ ["([жч])ой ", "$1ей "] ], "genitive": [ - ["^ [«\"](.+?)[»\"] ", " трасса \"$1\" "], + ["^ ([«\"])", " трасса $1"], ["^ (\\S+)ая [Аа]ллея ", " $1ой аллеи "], ["^ (\\S+)ья [Аа]ллея ", " $1ьей аллеи "], @@ -693,7 +693,7 @@ ["([жч])ого ", "$1ьего "] ], "prepositional": [ - ["^ [«\"](.+?)[»\"] ", " трасса \"$1\" "], + ["^ ([«\"])", " трасса $1"], ["^ (\\S+)ая [Аа]ллея ", " $1ой аллее "], ["^ (\\S+)ья [Аа]ллея ", " $1ьей аллее "], diff --git a/test/grammar_test.js b/test/grammar_test.js index ad1ac382e..05612645e 100644 --- a/test/grammar_test.js +++ b/test/grammar_test.js @@ -21,6 +21,10 @@ const grammarTests = { ['2-я улица Труда', 'dative', '2-й улице Труда'], ['2-я улица Труда', 'genitive', '2-й улицы Труда'], ['2-я улица Труда', 'prepositional', '2-й улице Труда'], + ['главная аллея «Годы войны»', 'accusative', 'главную аллею «Годы войны»'], + ['главная аллея «Годы войны»', 'dative', 'главной аллее «Годы войны»'], + ['главная аллея «Годы войны»', 'genitive', 'главной аллеи «Годы войны»'], + ['главная аллея «Годы войны»', 'prepositional', 'главной аллее «Годы войны»'], ['1-я линия В.О.', 'accusative', '1-ю линию В.О.'], ['1-я линия В.О.', 'dative', '1-й линии В.О.'], ['1-я линия В.О.', 'genitive', '1-й линии В.О.'], @@ -181,10 +185,10 @@ const grammarTests = { ['Третье Транспортное кольцо', 'dative', 'Третьему Транспортному кольцу'], ['Третье Транспортное кольцо', 'genitive', 'Третьего Транспортного кольца'], ['Третье Транспортное кольцо', 'prepositional', 'Третьем Транспортном кольце'], - ['«Приморское полукольцо»', 'accusative', 'трассу "Приморское полукольцо"'], - ['«Приморское полукольцо»', 'dative', 'трассе "Приморское полукольцо"'], - ['«Приморское полукольцо»', 'genitive', 'трассы "Приморское полукольцо"'], - ['«Приморское полукольцо»', 'prepositional', 'трассе "Приморское полукольцо"'], + ['«Приморское полукольцо»', 'accusative', 'трассу «Приморское полукольцо»'], + ['«Приморское полукольцо»', 'dative', 'трассе «Приморское полукольцо»'], + ['«Приморское полукольцо»', 'genitive', 'трассы «Приморское полукольцо»'], + ['«Приморское полукольцо»', 'prepositional', 'трассе «Приморское полукольцо»'], ['Приморское полукольцо', 'accusative', 'Приморское полукольцо'], ['Приморское полукольцо', 'dative', 'Приморскому полукольцу'], ['Приморское полукольцо', 'genitive', 'Приморского полукольца'], From 761cac9fb816fe5cf07659240abc737187ceb23d Mon Sep 17 00:00:00 2001 From: Yury Lebedev Date: Thu, 18 Jan 2018 22:59:09 +0300 Subject: [PATCH 8/9] Update for Russian ordinals in grammar; unified old records formatting --- CHANGELOG.md | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5528eb940..07857e76b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,16 +1,20 @@ # Change Log All notable changes to this project will be documented in this file. For change log formatting, see http://keepachangelog.com/ +## master + +- Extended ordinals support for Russian street names in grammar rules. [#192](https://github.com/Project-OSRM/osrm-text-instructions/pull/192) + ## 0.11.3 2017-01-12 - Added a new phrase for a short arrival and short upcoming arrival case. [#207](https://github.com/Project-OSRM/osrm-text-instructions/pull/207) ## 0.11.2 2017-01-10 -- Changed the phrases for forks to just say "Keep left onto [wayname]" (unless we have no information, in which case we still say "Keep left at the fork"). [#205](https://github.com/Project-OSRM/osrm-text-instructions/pull/205) +- Changed the phrases for forks to just say "Keep left onto. [wayname]" (unless we have no information, in which case we still say "Keep left at the fork"). [#205](https://github.com/Project-OSRM/osrm-text-instructions/pull/205) ## 0.11.1 2017-01-02 -- Changed the phrases for roundabout turns to match turns at standard intersections [#203](https://github.com/Project-OSRM/osrm-text-instructions/pull/203) +- Changed the phrases for roundabout turns to match turns at standard intersections. [#203](https://github.com/Project-OSRM/osrm-text-instructions/pull/203) ## 0.11.0 2017-12-13 @@ -28,25 +32,25 @@ All notable changes to this project will be documented in this file. For change ## 0.10.5 2017-10-27 -- Added a `merge straight` instruction [#183](https://github.com/Project-OSRM/osrm-text-instructions/pull/183) -- Added new untranslated Swedish strings related to roundabouts and rotary [#186](https://github.com/Project-OSRM/osrm-text-instructions/pull/186) +- Added a `merge straight` instruction. [#183](https://github.com/Project-OSRM/osrm-text-instructions/pull/183) +- Added new untranslated Swedish strings related to roundabouts and rotary. [#186](https://github.com/Project-OSRM/osrm-text-instructions/pull/186) ## 0.10.4 2017-10-26 -- Add a phrase for an upcoming arrival step [#184](https://github.com/Project-OSRM/osrm-text-instructions/pull/184) +- Add a phrase for an upcoming arrival step. [#184](https://github.com/Project-OSRM/osrm-text-instructions/pull/184) ## 0.10.3 2017-10-24 -- Change the default exit roundabout instruction to be `exit the traffic circle` [#182](https://github.com/Project-OSRM/osrm-text-instructions/pull/182) +- Change the default exit roundabout instruction to be `exit the traffic circle`. [#182](https://github.com/Project-OSRM/osrm-text-instructions/pull/182) ## 0.10.2 2017-10-24 -- Change the default exit rotary instruction to be `exit the traffic circle` [#181](https://github.com/Project-OSRM/osrm-text-instructions/pull/181) +- Change the default exit rotary instruction to be `exit the traffic circle`. [#181](https://github.com/Project-OSRM/osrm-text-instructions/pull/181) ## 0.10.1 2017-10-19 -- Simplify roundabout and rotary instructions for US usecase. Will need an GB version of en.json now [#179](https://github.com/Project-OSRM/osrm-text-instructions/pull/179) -- Clean up Russian roundabout and rotary instructions [#174](https://github.com/Project-OSRM/osrm-text-instructions/pull/174) +- Simplify roundabout and rotary instructions for US usecase. Will need an GB version of en.json now. [#179](https://github.com/Project-OSRM/osrm-text-instructions/pull/179) +- Clean up Russian roundabout and rotary instructions. [#174](https://github.com/Project-OSRM/osrm-text-instructions/pull/174) ## 0.10.0 2017-10-18 @@ -60,8 +64,8 @@ All notable changes to this project will be documented in this file. For change ## 0.8.0 2017-10-04 -- Added grammatical cases support for Russian way names [#102](https://github.com/Project-OSRM/osrm-text-instructions/pull/102) -- Adds `osrmti.getWayName` to the public api. You MUST NOT change the result before passing it into `osrmti.tokenize`. [#167](https://github.com/Project-OSRM/osrm-text-instructions/pull/167) +- Added grammatical cases support for Russian way names. [#102](https://github.com/Project-OSRM/osrm-text-instructions/pull/102) +- Adds `osrmti.getWayName` to the public API. You MUST NOT change the result before passing it into `osrmti.tokenize`. [#167](https://github.com/Project-OSRM/osrm-text-instructions/pull/167) ## 0.7.1 2017-09-26 @@ -76,13 +80,13 @@ All notable changes to this project will be documented in this file. For change - `language` is now the first argument of `tokenize` instead of the last. [#149](https://github.com/Project-OSRM/osrm-text-instructions/pull/149) - Added roundabout exit and rotary exit instructions. [#150](https://github.com/Project-OSRM/osrm-text-instructions/pull/150) - Updates `continue` maneuvers in en to read as turns when the road you are staying on turns at the intersection. [#145](https://github.com/Project-OSRM/osrm-text-instructions/pull/145) -- Updates language files from Transifex. [#144](https://github.com/Project-OSRM/osrm-text-instructions/pull/144) [#154](https://github.com/Project-OSRM/osrm-text-instructions/pull/154) +- Updates language files from Transifex. [#144](https://github.com/Project-OSRM/osrm-text-instructions/pull/144). [#154](https://github.com/Project-OSRM/osrm-text-instructions/pull/154) ## 0.6.0 2017-09-06 - Adds `phrase` types to the English localiztion. [#141](https://github.com/Project-OSRM/osrm-text-instructions/pull/141) - Adds `distance`, `name` and `namedistance` options to the continue and continue straight instructions. [#141](https://github.com/Project-OSRM/osrm-text-instructions/pull/141) -- Adds `tokenize` to the top level api so that external users can fill in osrm-text-instructions template strings. [#141](https://github.com/Project-OSRM/osrm-text-instructions/pull/141) +- Adds `tokenize` to the top level API so that external users can fill in osrm-text-instructions template strings. [#141](https://github.com/Project-OSRM/osrm-text-instructions/pull/141) - Made the format of name-and-ref combinations localizable. [#148](https://github.com/Project-OSRM/osrm-text-instructions/pull/141) - Improves the wording of "continue" instructions. [#142](https://github.com/Project-OSRM/osrm-text-instructions/pull/142) @@ -91,7 +95,7 @@ All notable changes to this project will be documented in this file. For change - Adds Brazilian Portuguese, Italian, and Ukrainian localizations. [#137](https://github.com/Project-OSRM/osrm-text-instructions/pull/137) - Adds the word “right” to right-hand exit instructions. [#125](https://github.com/Project-OSRM/osrm-text-instructions/pull/125) - Improves the wording of “continue straight” instructions. [#130](https://github.com/Project-OSRM/osrm-text-instructions/pull/130) -- Improves the wording of various instructions in Russian and Swedish. [#138](https://github.com/Project-OSRM/osrm-text-instructions/pull/138) [#137](https://github.com/Project-OSRM/osrm-text-instructions/pull/137) +- Improves the wording of various instructions in Russian and Swedish. [#138](https://github.com/Project-OSRM/osrm-text-instructions/pull/138). [#137](https://github.com/Project-OSRM/osrm-text-instructions/pull/137) - The Spanish localization consistently uses _usted_ form. [#137](https://github.com/Project-OSRM/osrm-text-instructions/pull/137) ## 0.5.2 2017-07-25 From 612b9d4e907efcc1f78b8f7fe45df5d8f578f434 Mon Sep 17 00:00:00 2001 From: Yury Lebedev Date: Fri, 19 Jan 2018 00:16:01 +0300 Subject: [PATCH 9/9] Remove extra dot --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07857e76b..17aa312f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,7 @@ All notable changes to this project will be documented in this file. For change ## 0.11.2 2017-01-10 -- Changed the phrases for forks to just say "Keep left onto. [wayname]" (unless we have no information, in which case we still say "Keep left at the fork"). [#205](https://github.com/Project-OSRM/osrm-text-instructions/pull/205) +- Changed the phrases for forks to just say "Keep left onto [wayname]" (unless we have no information, in which case we still say "Keep left at the fork"). [#205](https://github.com/Project-OSRM/osrm-text-instructions/pull/205) ## 0.11.1 2017-01-02 - Changed the phrases for roundabout turns to match turns at standard intersections. [#203](https://github.com/Project-OSRM/osrm-text-instructions/pull/203)