import { ANDROGYNOUS } from '../gender' ; import type { DeclentionModsT , DeclensionRuleSetT } from '../inclineRules' ; export type DeclensionCityRuleT = { test : string [ ] ; mods : DeclentionModsT ; tags ? : string [ ] ; } ; export type DeclensionCityRuleSetT = { exceptions : DeclensionCityRuleT [ ] ; suffixes : DeclensionCityRuleT [ ] ; } ; export const frozenWords = [ 'форт-шевченко' ] ; export const frozenParts = [ '-' , ' ' , 'в' , 'на' , 'баден' , 'бледно' , 'буэнос' , 'вице' , 'гаврилов' , 'йошкар' , 'коста' , 'лос' , 'норд' , 'нью' , 'орехово' , 'принс' , 'сан' , 'санкт' , 'санта' , 'северо' , 'ситтард' , 'темно' , 'улан' , 'усолье' , 'усть' , 'форт' , 'царь' , 'экс' , 'юго' , 'юрьев' , 'нур' , ] ; export const frozenPartsAfter = [ 'село' , 'поселок' , 'аул' , 'город' , 'деревня' , 'урочище' ] ; const cityInflections = { exceptions : [ { test : [ 'сочи' , 'тбилиси' , 'хельсинки' ] , mods : [ '' , '' , '' , '' , '' ] , } , { test : [ 'село' , 'озеро' , 'место' ] , mods : [ '-а' , '-у' , '' , 'м' , '-е' ] , } , { test : [ 'область' ] , mods : [ '-и' , '-и' , '' , 'ю' , '-и' ] , } , { test : [ 'деревня' ] , mods : [ '-и' , '-е' , '-ю' , '-ей' , '-е' ] , } , { test : [ 'море' ] , mods : [ '-я' , '-ю' , '' , 'м' , '' ] , } , { test : [ 'холм' ] , mods : [ 'а' , 'у' , '' , 'ом' , 'е' ] , } , { test : [ 'орел' , 'орёл' ] , mods : [ '--ла' , '--лу' , '--ла' , '--лом' , '--ле' ] , } , { test : [ 'крым' ] , mods : [ '-ма' , '-му' , '-ма' , '-ом' , '-му' ] , } , ] , suffixes : [ { test : [ 'чёк' , 'чек' ] , mods : [ '--ка' , '--ку' , '' , '--ком' , '--ке' ] , } , { test : [ 'чик' , 'ич' ] , mods : [ 'а' , 'у' , '' , 'ом' , 'е' ] , } , { test : [ 'жний' , 'хний' , 'шний' , 'щий' ] , mods : [ '--его' , '--ему' , '' , '-м' , '--ем' ] , } , { test : [ 'ще' ] , mods : [ '-а' , '-у' , '' , 'м' , '' ] , } , { test : [ 'щи' ] , mods : [ '-' , '-ам' , '' , '-ами' , '-ах' ] , } , { test : [ 'чье' ] , mods : [ '-я' , '-ю' , '' , 'м' , '' ] , } , { test : [ 'ель' , 'пль' ] , mods : [ '-я' , '-ю' , '' , '-ем' , '-е' ] , } , { test : [ 'чь' ] , mods : [ '-и' , '-и' , '' , 'ю' , '-и' ] , } , { test : [ 'чи' ] , mods : [ '-ей' , '-ам' , '' , '-ами' , '-ах' ] , } , { test : [ 'ые' , 'ие' ] , mods : [ '-х' , '-м' , '' , '-ми' , '-х' ] , } , { test : [ 'ый' , 'ий' , 'ое' ] , mods : [ '--ого' , '--ому' , '' , '-м' , '--ом' ] , } , { test : [ 'ая' ] , mods : [ '--ой' , '--ой' , '--ую' , '--ой' , '--ой' ] , } , { test : [ 'гиев' ] , mods : [ 'а' , 'у' , '' , 'ым' , 'ом' ] , } , { test : [ 'ны' , 'вцы' ] , mods : [ '-ов' , '-ам' , '' , '-ами' , '-ах' ] , } , { test : [ 'ша' ] , mods : [ '-и' , '-е' , '-у' , '-ей' , '-е' ] , } , { test : [ 'ры' , 'цы' , 'ды' , 'ги' , ] , mods : [ '-' , '-ам' , '' , '-ами' , '-ах' ] , } , { test : [ 'амень' ] , mods : [ '---ня' , '---ню' , '' , '---нем' , '---не' ] , } , { test : [ 'ьн' , 'нц' , 'мм' , ] , mods : [ 'а' , 'у' , '' , 'ом' , 'е' ] , } , ] , } ; export const cityRules = { exceptions : cityInflections . exceptions . map ( ( o ) => ( { gender : ANDROGYNOUS , ... o } ) ) , suffixes : cityInflections . suffixes . map ( ( o ) => ( { gender : ANDROGYNOUS , ... o } ) ) , } ;