@@ -371,39 +371,89 @@ def render_variant(tpl: str, parts: list[str], data: defaultdict[str, str], *, w
371371
372372# Details found on # https://ru.wiktionary.org/wiki/Шаблон:TPL
373373DECL = {
374- "сущ ru f ina 0" : [],
375- "сущ ru f ina 1a" : ["а" , "ы" , "е" , "у" , "ой" , "ою" , "ам" , "ами" , "ах" ],
376- "сущ ru f ina 2a" : ["я" , "и" , "е" , "ю" , "ей" , "ею" , "ь" , "ям" , "ями" , "ях" ],
377- "сущ ru f ina 3a" : ["а" , "и" , "е" , "у" , "ой" , "ою" , "ам" , "ами" , "ах" ],
378- "сущ ru f ina 5a" : ["а" , "ы" , "е" , "у" , "ей" , "ею" , "ам" , "ами" , "ам" ],
379- "сущ ru f ina 6a" : ["я" , "и" , "е" , "ю" , "ей" , "ею" , "ям" , "ями" , "ях" ],
380- "сущ ru f ina 7a" : ["я" , "и" , "ю" , "ей" , "ею" , "й" , "ям" , "ями" , "ях" ],
381- "сущ ru f ina 8a" : ["ь" , "и" , "ью" , "ей" , "ям" , "ями" , "ях" ],
382- "сущ ru f ina 1b" : ["а́" , "ы́" , "е́" , "у́" , "о́й" , "о́ю" , "а́м" , "а́ми" , "а́х" ],
383- "сущ ru f ina 3b" : ["а́" , "и́" , "е́" , "у́" , "о́й" , "о́ю" , "а́м" , "а́ми" , "а́х" ],
384- "сущ ru f ina 4b" : ["а́" , "и́" , "е́" , "у́" , "о́й" , "о́ю" , "е́й" , "а́м" , "а́ми" , "а́х" ],
385- "сущ ru f ina 6b" : ["я́" , "е́" , "ю́" , "ей" , "ею" , "я́м" , "я́ми" , "я́х" ],
374+ "сущ ru f a 0" : [],
375+ "сущ ru f a 1a" : ["а" , "ы" , "е" , "у" , "ой" , "ою" , "ам" , "ами" , "ах" ],
376+ "сущ ru f a 2a" : ["я" , "и" , "е" , "ю" , "ей" , "ею" , "ь" , "ям" , "ями" , "ях" ],
377+ "сущ ru f a 3a" : ["а" , "и" , "е" , "у" , "ой" , "ою" , "ам" , "ами" , "ах" ],
378+ "сущ ru f a 5a" : ["а" , "ы" , "е" , "у" , "ей" , "ею" , "ам" , "ами" , "ам" ],
379+ "сущ ru f a 6a" : ["я" , "и" , "е" , "ю" , "ей" , "ею" , "ям" , "ями" , "ях" ],
380+ "сущ ru f a 7a" : ["я" , "и" , "ю" , "ей" , "ею" , "й" , "ям" , "ями" , "ях" ],
381+ "сущ ru f a 8a" : ["ь" , "и" , "ью" , "ей" , "ям" , "ями" , "ях" ],
382+ "сущ ru f a 1b" : ["а́" , "ы́" , "е́" , "у́" , "о́й" , "о́ю" , "а́м" , "а́ми" , "а́х" ],
383+ "сущ ru f a 3b" : ["а́" , "и́" , "е́" , "у́" , "о́й" , "о́ю" , "а́м" , "а́ми" , "а́х" ],
384+ "сущ ru f a 4b" : ["а́" , "и́" , "е́" , "у́" , "о́й" , "о́ю" , "е́й" , "а́м" , "а́ми" , "а́х" ],
385+ "сущ ru f a 6b" : ["я́" , "е́" , "ю́" , "ей" , "ею" , "я́м" , "я́ми" , "я́х" ],
386386 "сущ ru m a 0" : [],
387387 "сущ ru m a 1a" : ["а" , "у" , "ом" , "е" , "ы" , "ов" , "ам" , "ами" , "ах" ],
388+ "сущ ru m a 2a" : ["ь" , "я" , "ю" , "ем" , "е" , "и" , "ей" , "ям" , "ями" , "ях" ],
389+ "сущ ru m a 3a" : ["а" , "у" , "ом" , "е" , "и" , "ов" , "ам" , "ами" , "ах" ],
390+ "сущ ru m a 4a" : ["а" , "у" , "ом" , "е" , "и" , "ей" , "ам" , "ами" , "ах" ],
391+ "сущ ru m a 5a" : ["а" , "у" , "ем" , "е" , "ы" , "ев" , "ам" , "ами" , "ах" ],
392+ "сущ ru m a 6a" : ["й" , "я" , "ю" , "ем" , "е" , "и" , "ев" , "ям" , "ями" , "ях" ],
393+ "сущ ru m a 7a" : ["й" , "я" , "ю" , "ем" , "и" , "ев" , "ям" , "ями" , "ях" ],
388394 "сущ ru m a 1b" : ["а́" , "у́" , "о́м" , "е́" , "ы́" , "о́в" , "а́м" , "а́ми" , "а́х" ],
389395 "сущ ru m a 2b" : ["ю́" , "я́" , "ём" , "е́" , "е́й" , "я́м" , "я́ми" , "я́х" ],
390396 "сущ ru m a 4b" : ["а́" , "у́" , "о́м" , "е́" , "и́" , "е́й" , "а́м" , "а́ми" , "а́х" ],
391397 "сущ ru m a 6b" : ["я́" , "ю́" , "ём" , "е́" , "ёв" , "я́м" , "я́ми" , "я́х" ],
392- "сущ ru m ina 0" : [],
393- "сущ ru m ina 1a" : ["а" , "у" , "ом" , "е" , "ы" , "ов" , "ам" , "ами" , "ах" ],
394- "сущ ru m ina 2a" : ["ь" , "я" , "ю" , "ем" , "е" , "и" , "ей" , "ям" , "ями" , "ях" ],
395- "сущ ru m ina 3a" : ["а" , "у" , "ом" , "е" , "и" , "ов" , "ам" , "ами" , "ах" ],
396- "сущ ru m ina 4a" : ["а" , "у" , "ом" , "е" , "и" , "ей" , "ам" , "ами" , "ах" ],
397- "сущ ru m ina 5a" : ["а" , "у" , "ем" , "е" , "ы" , "ев" , "ам" , "ами" , "ах" ],
398- "сущ ru m ina 6a" : ["й" , "я" , "ю" , "ем" , "е" , "и" , "ев" , "ям" , "ями" , "ях" ],
399- "сущ ru m ina 7a" : ["й" , "я" , "ю" , "ем" , "и" , "ев" , "ям" , "ями" , "ях" ],
398+ "прил ru 1a" : ["ый" , "ого" , "ому" , "ым" , "ом" , "ое" , "ая" , "ой" , "ую" , "ою" , "ые" , "ых" , "ым" , "ыми" ],
399+ "прил ru 2a" : ["ий" , "его" , "ему" , "им" , "ем" , "ь" , "ее" , "яя" , "ей" , "юю" , "я" , "ие" , "их" , "ими" ],
400+ "прил ru 3a" : [
401+ "ий" ,
402+ "ого" ,
403+ "ому" ,
404+ "им" ,
405+ "ом" ,
406+ "ое" ,
407+ "ого" ,
408+ "ому" ,
409+ "о" ,
410+ "ая" ,
411+ "ой" ,
412+ "ую" ,
413+ "ою" ,
414+ "а" ,
415+ "ие" ,
416+ "их" ,
417+ "ими" ,
418+ ],
419+ "прил ru 4a" : ["ий" , "его" , "ему" , "ий" , "им" , "ем" , "ее" , "ая" , "ей" , "ую" , "ею" , "ие" , "их" , "ими" ],
420+ "прил ru 5a" : [
421+ "ый" ,
422+ "его" ,
423+ "ему" ,
424+ "ым" ,
425+ "ем" ,
426+ "ее" ,
427+ "е" ,
428+ "ая" ,
429+ "ей" ,
430+ "ую" ,
431+ "ею" ,
432+ "а" ,
433+ "ые" ,
434+ "ым" ,
435+ "ых" ,
436+ "ыми" ,
437+ "ы" ,
438+ ],
439+ "прил ru 6a" : ["ий" , "его" , "ему" , "ий" , "им" , "ем" , "ее" , "яя" , "ей" , "юю" , "ею" , "ие" , "их" , "ими" ],
440+ "прил ru 1b" : ["о́й" , "о́го" , "о́му" , "ы́м" , "о́м" , "о́е" , "а́я" , "у́ю" , "о́ю" , "ы́е" , "ы́х" , "ы́м" , "ы́ми" ],
400441 "прил ru 3b" : ["о́й" , "о́го" , "о́му" , "и́м" , "о́м" , "о́е" , "а́я" , "у́ю" , "о́ю" , "и́е" , "и́х" , "и́ми" ],
401442}
402- DECL ["сущ ru f ina 2b" ] = DECL ["сущ ru f ina 1b" ]
403- DECL ["сущ ru f ina 5b" ] = DECL ["сущ ru f ina 1b" ]
404- DECL ["сущ ru f ina 4a" ] = DECL ["сущ ru f ina 3a" ]
443+ DECL ["сущ ru f a 2b" ] = DECL ["сущ ru f a 1b" ]
444+ DECL ["сущ ru f a 5b" ] = DECL ["сущ ru f a 1b" ]
445+ DECL ["сущ ru f a 4a" ] = DECL ["сущ ru f a 3a" ]
405446DECL ["сущ ru m a 3b" ] = DECL ["сущ ru m a 1b" ]
406447DECL ["сущ ru m a 5b" ] = DECL ["сущ ru m a 1b" ]
448+ DECL ["сущ ru f ina 0" ] = DECL ["сущ ru f a 0" ]
449+ DECL ["сущ ru m ina 0" ] = DECL ["сущ ru m a 0" ]
450+ for n in range (1 , 8 ):
451+ DECL [f"сущ ru f ina { n } a" ] = DECL [f"сущ ru f a { n } a" ]
452+ DECL [f"сущ ru m ina { n } a" ] = DECL [f"сущ ru m a { n } a" ]
453+ for n in range (1 , 7 ):
454+ DECL [f"сущ ru f ina { n } b" ] = DECL [f"сущ ru f a { n } b" ]
455+ DECL [f"сущ ru m ina { n } b" ] = DECL [f"сущ ru m a { n } b" ]
456+ DECL ["прил ru 4b" ] = DECL ["прил ru 3b" ]
407457
408458
409459def render_reverse_variant (tpl : str , parts : list [str ], data : defaultdict [str , str ], * , word : str = "" ) -> str :
@@ -430,15 +480,31 @@ def render_reverse_variant(tpl: str, parts: list[str], data: defaultdict[str, st
430480 suffixes = DECL [tpl ]
431481
432482 match tpl :
433- case "сущ ru f ina 3b" | "сущ ru f ina 5b" :
483+ case (
484+ "сущ ru f a 1b"
485+ | "сущ ru f a 3b"
486+ | "сущ ru f a 5b"
487+ | "сущ ru f ina 1b"
488+ | "сущ ru f ina 3b"
489+ | "сущ ru f ina 5b"
490+ ):
434491 return "|" .join ([основа1 , * [f"{ основа } { suf } " for suf in suffixes ]])
435- case "сущ ru f ina 6b" | "сущ ru f ina 7b" :
492+ case "сущ ru f a 6b" | "сущ ru f a 7b" | "сущ ru f ina 6b" | "сущ ru f ina 7b" :
436493 return "|" .join ([f"{ основа1 } й" , * [f"{ основа } { suf } " for suf in suffixes ]])
437- case "сущ ru m a 1b" | "сущ ru m a 3b" | "сущ ru m a 4b" | "сущ ru m a 5b" :
494+ case (
495+ "сущ ru m a 1b"
496+ | "сущ ru m a 3b"
497+ | "сущ ru m a 4b"
498+ | "сущ ru m a 5b"
499+ | "сущ ru m ina 1b"
500+ | "сущ ru m ina 3b"
501+ | "сущ ru m ina 4b"
502+ | "сущ ru m ina 5b"
503+ ):
438504 return "|" .join ([основа , * [f"{ основа1 } { suf } " for suf in suffixes ]])
439- case "сущ ru m a 2b" :
505+ case "сущ ru m a 2b" | "сущ ru m ina 2b" :
440506 return "|" .join ([f"{ основа } ь" , * [f"{ основа1 } { suf } " for suf in suffixes ]])
441- case "сущ ru m a 6b" :
507+ case "сущ ru m a 6b" | "сущ ru m ina 6b" :
442508 return "|" .join ([f"{ основа } й" , * [f"{ основа1 } { suf } " for suf in suffixes ]])
443509 case _:
444510 return "|" .join ([основа , * [f"{ основа } { suf } " for suf in suffixes ]])
0 commit comments