--# -path=.:../abstract:../common incomplete concrete DocumentationRusFunctor of Documentation = CatRus ** open Terminology, -- the interface ResRus, ParadigmsRus, Prelude, HTML in { lincat Inflection = {t : Str; s1,s2 : Str} ; Definition = {s : Str} ; Document = {s : Str} ; Tag = {s : Str} ; {- -} --# notpresent oper heading : N -> Str = \n -> (nounHeading n).s ; lin InflectionN, InflectionN2, InflectionN3 = \noun -> { t = "сущ." ; s1 = heading1 (heading noun_Category ++ case noun.g of { Masc => "(м.р.)" ; Fem => "(ж.р.)" ; Neut => "(ср.р.)" }) ; s2 = inflNoun noun ++ case noun.rt of { GenType => [] ; AdjType => heading1 (heading adjective_Category) ++ inflAdj noun.rel } } ; InflectionPN = \pn -> { t = "сущ.с." ; s1 = heading1 ("Существительное Собственное" ++ case pn.g of { Masc => "(м.р.)" ; Fem => "(ж.р.)" ; Neut => "(ср.р.)" }) ; s2 = frameTable ( tr (th (heading nominative_Parameter) ++ td (pn.snom)) ++ tr (th (heading genitive_Parameter) ++ td (pn.sgen)) ++ tr (th (heading dative_Parameter) ++ td (pn.sdat)) ++ tr (th (heading accusative_Parameter) ++ td (pn.sacc)) ++ tr (th ("творительный") ++ td (pn.sins)) ++ tr (th ("предложный") ++ td (pn.sprep)) ++ tr (th (heading partitive_Parameter) ++ td (pn.sptv)) ++ tr (th ("местный") ++ td (pn.sloc)) ++ tr (th ("звательный") ++ td (pn.svoc)) ) ; } ; InflectionGN = \gn -> { t = "сущ.с." ; s1 = heading1 (case gn.g of { Male => "Мужское Личное Имя" ; Female => "Женское Личное Имя" }); s2 = frameTable ( tr (th (heading nominative_Parameter) ++ td (gn.s ! Nom)) ++ tr (th (heading genitive_Parameter) ++ td (gn.s ! Gen)) ++ tr (th (heading dative_Parameter) ++ td (gn.s ! Dat)) ++ tr (th (heading accusative_Parameter) ++ td (gn.s ! Acc)) ++ tr (th ("творительный") ++ td (gn.s ! Ins)) ++ tr (th ("предложный") ++ td (gn.s ! Pre)) ++ tr (th (heading partitive_Parameter) ++ td (gn.s ! Ptv)) ++ tr (th ("местный") ++ td (gn.s ! Loc)) ++ tr (th ("звательный") ++ td (gn.s ! VocRus)) ) } ; InflectionSN = \sn -> { t = "сущ.с." ; s1 = heading1 "Фамилия" ; s2 = frameTable ( tr (th (heading nominative_Parameter) ++ td (sn.s ! Male ! Nom)) ++ tr (th (heading genitive_Parameter) ++ td (sn.s ! Male ! Gen)) ++ tr (th (heading dative_Parameter) ++ td (sn.s ! Male ! Dat)) ++ tr (th (heading accusative_Parameter) ++ td (sn.s ! Male ! Acc)) ++ tr (th ("творительный") ++ td (sn.s ! Male ! Ins)) ++ tr (th ("предложный") ++ td (sn.s ! Male ! Pre)) ++ tr (th (heading partitive_Parameter) ++ td (sn.s ! Male ! Ptv)) ++ tr (th ("местный") ++ td (sn.s ! Male ! Loc)) ++ tr (th ("звательный") ++ td (sn.s ! Male ! VocRus)) ) } ; InflectionLN = \ln -> { t = "сущ.с." ; s1 = heading1 ("Название Местоположения" ++ case ln.g of { Masc => "(м.р.)" ; Fem => "(ж.р.)" ; Neut => "(ср.р.)" }) ; s2 = frameTable ( tr (th (heading nominative_Parameter) ++ td (ln.s ! Nom)) ++ tr (th (heading genitive_Parameter) ++ td (ln.s ! Gen)) ++ tr (th (heading dative_Parameter) ++ td (ln.s ! Dat)) ++ tr (th (heading accusative_Parameter) ++ td (ln.s ! Acc)) ++ tr (th ("творительный") ++ td (ln.s ! Ins)) ++ tr (th ("предложный") ++ td (ln.s ! Pre)) ++ tr (th (heading partitive_Parameter) ++ td (ln.s ! Ptv)) ++ tr (th ("местный") ++ td (ln.s ! Loc)) ++ tr (th ("звательный") ++ td (ln.s ! VocRus)) ) ++ heading2 (heading adverb_Category) ++ paragraph (ln.c.s ++ ln.s ! ln.c.c) } ; InflectionA, InflectionA2 = \adj -> { t = "пр" ; s1 = heading1 (heading adjective_Category) ; s2 = inflAdj adj } ; InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> { t = "нар" ; s1 = heading1 (heading adverb_Category) ; s2 = paragraph adv.s } ; InflectionPrep p = { t = "пред" ; s1 = heading1 (heading preposition_Category) ; s2 = paragraph (p.s ++ "+" ++ case p.c of { Nom => "именительный" ; Gen => "родительный" ; Dat => "дательный" ; Acc => "винительный" ; Ins => "творительный" ; Pre => "предложный" ; Ptv => "разделительный" ; Loc => "местный" ; VocRus=>"звательный" }) } ; InflectionV, InflectionV2, InflectionV3, InflectionV2V, InflectionV2S, InflectionV2Q, InflectionV2A, InflectionVS, InflectionVQ, InflectionVA = \v -> { t = "гл" ; s1 = heading1 (heading verb_Category) ; s2 = inflVerb v } ; InflectionVV vv = { t = "гл" ; s1 = heading1 (heading verb_Category) ; s2 = inflVerb vv.v } ; oper {- -} --# notpresent inflVerb : CatRus.V -> Str = \v -> let fut : Agr=>Str = \\a => verbFutAgree v a in let pres : Agr=>Str = \\a => verbPresAgree v a in let past : Agr=>Str = \\a => verbPastAgree v a "" in let imp : Agr=>Str = \\a => ((verbImperativeAgree v a).p1 ++ (verbImperativeAgree v a).p2) in let ppp : GenNum=>Str = \\gn => shortPastPassPart v gn in case v.asp of {Imperfective => "несовершенного вида" ; Perfective => "совершенного вида"} ++ "," ++ case v.refltran of { Refl => "возвратный" ; Intrans => "непереходный" ; Trans => "переходный"} ++ "," ++ heading2 (heading infinitive_Parameter) ++ frameTable ( tr (td v.inf ++ td v.infrefl) ) ++ frameTable ( tr (th (heading person_ParameterType) ++ th (heading number_ParameterType) ++ th (heading gender_ParameterType) ++ th (heading past_Parameter) ++ th (heading present_Parameter) ++ th (heading future_Parameter) ++ th (heading imperative_Parameter)) ++ tr (th (heading person1_Parameter) ++ th (heading singular_Parameter) ++ th (heading masculine_Parameter) ++ td (past ! Ag (GSg Masc) P1) ++ td (pres ! Ag (GSg Masc) P1) ++ td(fut ! Ag (GSg Masc) P1) ++ td (imp ! Ag (GSg Masc) P1)) ++ tr (th "" ++ th "" ++ th (heading feminine_Parameter) ++ td (past ! Ag (GSg Fem) P1) ++ td "" ++ td "") ++ tr (th "" ++ th "" ++ th (heading neuter_Parameter) ++ td (past ! Ag (GSg Neut) P1) ++ td "" ++ td "") ++ tr (th "" ++ th (heading plural_Parameter) ++ th "" ++ td (past ! Ag GPl P1) ++ td (pres ! Ag GPl P1) ++ td(fut ! Ag GPl P1) ++ td (imp ! Ag GPl P1)) ++ tr (th (heading person2_Parameter) ++ th (heading singular_Parameter) ++ th (heading masculine_Parameter) ++ td (past ! Ag (GSg Masc) P2) ++ td (pres ! Ag (GSg Masc) P2) ++ td (fut ! Ag (GSg Masc) P2) ++ td (imp ! Ag (GSg Masc) P2) ) ++ tr (th "" ++ th "" ++ th (heading feminine_Parameter) ++ td (past ! Ag (GSg Fem) P2) ++ td "" ++ td "") ++ tr (th "" ++ th "" ++ th (heading neuter_Parameter) ++ td (past ! Ag (GSg Neut) P2) ++ td "" ++ td "") ++ tr (th "" ++ th (heading plural_Parameter) ++ th "" ++ td (past ! Ag GPl P2) ++ td (pres ! Ag GPl P2) ++ td(fut ! Ag GPl P2) ++ td (imp ! Ag GPl P2)) ++ tr (th (heading person3_Parameter) ++ th (heading singular_Parameter) ++ th (heading masculine_Parameter) ++ td (past ! Ag (GSg Masc) P3) ++ td (pres ! Ag (GSg Masc) P3) ++ td(fut ! Ag (GSg Masc) P3) ) ++ tr (th "" ++ th "" ++ th (heading feminine_Parameter) ++ td (past ! Ag (GSg Fem) P3) ++ td "" ++ td "") ++ tr (th "" ++ th "" ++ th (heading neuter_Parameter) ++ td (past ! Ag (GSg Neut) P3) ++ td "" ++ td "") ++ tr (th "" ++ th (heading plural_Parameter) ++ th "" ++ td (past ! Ag GPl P3) ++ td (pres ! Ag GPl P3) ++ td (fut ! Ag GPl P3) ++ td (imp ! Ag GPl P3) ) ) ++ heading2 ("краткие причастия прошедшего времени") ++ case v.refltran of { Trans => frameTable ( tr (th (heading masculine_Parameter) ++ th (heading feminine_Parameter) ++ th (heading neuter_Parameter) ++ th (heading plural_Parameter)) ++ tr (td (ppp ! (GSg Masc)) ++ td (ppp ! (GSg Fem)) ++ td (ppp ! (GSg Neut)) ++ td (ppp ! GPl)) ) ; _ => "-" } ++ heading2 ("деепричастия") ++ frameTable ( tr (th (heading past_Parameter) ++ th (heading present_Parameter)) ++ tr (td (v.prtr ++ verbRefl v) ++ td (v.ptr ++ verbRefl v)) ) ; inflNoun : NounForms -> Str = \nf -> frameTable ( tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++ tr (th (heading nominative_Parameter) ++ td (nf.snom) ++ td (nf.pnom)) ++ tr (th (heading genitive_Parameter) ++ td (nf.sgen) ++ td (nf.pgen)) ++ tr (th (heading dative_Parameter) ++ td (nf.sdat) ++ td (nf.pdat)) ++ tr (th (heading accusative_Parameter) ++ td (nf.sacc) ++ td (nf.pacc)) ++ tr (th ("творительный") ++ td (nf.sins) ++ td (nf.pins)) ++ tr (th ("предложный") ++ td (nf.sprep) ++ td (nf.pprep)) ++ tr (th (heading partitive_Parameter) ++ td (nf.sptv) ++ td ("-")) ++ tr (th ("местный") ++ td (nf.sloc) ++ td ("-")) ++ tr (th ("звательный") ++ td (nf.svoc) ++ td ("-")) ) ; inflAdj : AdjForms -> Str = \adj -> heading2 (heading masculine_Parameter) ++ inflNoun (makeNFFromAF adj Masc Inanimate) ++ heading2 (heading feminine_Parameter) ++ inflNoun (makeNFFromAF adj Fem Inanimate) ++ heading2 (heading neuter_Parameter) ++ inflNoun (makeNFFromAF adj Neut Inanimate) ++ heading2 (heading comparative_Parameter) ++ frameTable (tr (tr (adj.comp))) ; lin -- : String -> Definition ; NoDefinition t = {s=t.s}; -- : String -> String -> Definition ; MkDefinition t d = {s="

" ++ (heading formGr_N) ++ ""++t.s++d.s++"

"}; -- : String -> String -> String -> Definition ; MkDefinitionEx t d e = {s="

" ++ (heading formGr_N) ++ ""++t.s++d.s++"

" ++ (heading exampleGr_N) ++":"++e.s++"

"}; lin -- : Definition -> Inflection -> String -> Document ; MkDocument d i e = ss (i.s1 ++ d.s ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph -- : Inflection -> Tag ; MkTag i = ss (i.t) ; {- --# notpresent -} }