packages feed

gf-3.6: lib/src/bulgarian/DocumentationBul.gf

--# -path=.:../abstract:../common
concrete DocumentationBul of Documentation = CatBul ** open 
  ResBul,
  HTML in {

lincat
  Inflection = {t : Str; s1,s2,s3 : Str} ;
  Document   = {s : Str} ;
  Tag        = {s : Str} ;

lin
  InflectionN n = {
    t = "същ" ;
    s1= heading1 ("Съществително"++
                  case n.g of {
                    AMasc Human    => "(м.р.л.)" ;
                    AMasc NonHuman => "(м.р.)" ;
                    AFem           => "(ж.р.)" ;
                    ANeut          => "(ср.р.)"
                  }) ;
    s2= frameTable (
          tr (intagAttr "th" "rowspan=\"3\"" "ед.ч." ++ 
              th "нечленувано" ++ td (n.s ! (NF Sg Indef))) ++
          tr (th "членувано" ++ td (n.s ! (NF Sg Def))) ++
          tr (th "пълен член" ++ td (n.s ! NFSgDefNom)) ++
          tr (intagAttr "th" "rowspan=\"2\"" "мн.ч." ++ 
              th "нечленувано" ++ td (n.s ! (NF Pl Indef))) ++
          tr (th "членувано" ++ td (n.s ! (NF Pl Def))) ++
          tr (intagAttr "th" "colspan=\"2\"" "звателна форма" ++ td (n.s ! NFVocative)) ++
          tr (intagAttr "th" "colspan=\"2\"" "бройна форма" ++ td (n.s ! NFPlCount))
        ) ;
    s3= heading1 ("Прилагателно") ++
        frameTable (
          tr (intagAttr "th" "rowspan=\"7\"" "ед.ч." ++ 
              intagAttr "th" "rowspan=\"3\"" "мн.ч." ++ 
              th "нечленувано" ++ 
              td (n.rel ! (ASg Masc Indef))) ++
          tr (th "непълен член" ++ td (n.rel ! (ASg Masc Def))) ++
          tr (th "пълен член" ++ td (n.rel ! ASgMascDefNom)) ++
          tr (intagAttr "th" "rowspan=\"2\"" "ж.р." ++
              th "нечленувано" ++ td (n.rel ! (ASg Fem Indef))) ++
          tr (th "членувано" ++ td (n.rel ! (ASg Fem Def))) ++
          tr (intagAttr "th" "rowspan=\"2\"" "ср.р." ++
              th "нечленувано" ++ td (n.rel ! (ASg Neut Indef))) ++
          tr (th "членувано" ++ td (n.rel ! (ASg Neut Def))) ++
          tr (intagAttr "th" "colspan=\"2\" rowspan=\"2\"" "мн.ч." ++
              th "нечленувано" ++ td (n.rel ! (APl Indef))) ++
          tr (th "членувано" ++ td (n.rel ! (APl Def)))
        )
  } ;

  InflectionN2,InflectionN3 = \n -> {
    t = "същ" ;
    s1= heading1 ("Съществително "++
                  case n.g of {
                    AMasc Human    => "(м.р.л.)" ;
                    AMasc NonHuman => "(м.р.)" ;
                    AFem           => "(ж.р.)" ;
                    ANeut          => "(ср.р.)"
                  }) ;
    s2= frameTable (
          tr (intagAttr "th" "rowspan=\"3\"" "ед.ч." ++ 
              th "нечленувано" ++ td (n.s ! (NF Sg Indef))) ++
          tr (th "членувано" ++ td (n.s ! (NF Sg Def))) ++
          tr (th "пълен член" ++ td (n.s ! NFSgDefNom)) ++
          tr (intagAttr "th" "rowspan=\"2\"" "мн.ч." ++ 
              th "нечленувано" ++ td (n.s ! (NF Pl Indef))) ++
          tr (th "членувано" ++ td (n.s ! (NF Pl Def))) ++
          tr (intagAttr "th" "colspan=\"2\"" "звателна форма" ++ td (n.s ! NFVocative)) ++
          tr (intagAttr "th" "colspan=\"2\"" "бройна форма" ++ td (n.s ! NFPlCount))
        ) ;
    s3 = ""
    } ;

  InflectionA, InflectionA2 = \a -> {
    t = "пр" ;
    s1= heading1 ("Прилагателно") ;
    s2= frameTable (
          tr (intagAttr "th" "rowspan=\"7\"" "ед.ч." ++ 
              intagAttr "th" "rowspan=\"3\"" "мн.ч." ++ 
              th "нечленувано" ++ 
              td (a.s ! (ASg Masc Indef))) ++
          tr (th "непълен член" ++ td (a.s ! (ASg Masc Def))) ++
          tr (th "пълен член" ++ td (a.s ! ASgMascDefNom)) ++
          tr (intagAttr "th" "rowspan=\"2\"" "ж.р." ++
              th "нечленувано" ++ td (a.s ! (ASg Fem Indef))) ++
          tr (th "членувано" ++ td (a.s ! (ASg Fem Def))) ++
          tr (intagAttr "th" "rowspan=\"2\"" "ср.р." ++
              th "нечленувано" ++ td (a.s ! (ASg Neut Indef))) ++
          tr (th "членувано" ++ td (a.s ! (ASg Neut Def))) ++
          tr (intagAttr "th" "colspan=\"2\" rowspan=\"2\"" "мн.ч." ++
              th "нечленувано" ++ td (a.s ! (APl Indef))) ++
          tr (th "членувано" ++ td (a.s ! (APl Def)))
        ) ;
    s3= ""
    } ;

  InflectionAdv = \adv -> {
    t = "нар" ;
    s1= heading1 ("Наречие") ;
    s2= paragraph (adv.s) ;
    s3= ""
    } ;

  InflectionPrep = \prep -> {
    t = "пр" ;
    s1= heading1 ("Предлог") ;
    s2= paragraph (prep.s) ;
    s3= ""
    } ;

  InflectionV v = {
    t = "гл" ;
    s1= heading1 ("Глагол") ++
        pp "подлог" ++
        case v.vtype of {
          VNormal => "" ;
          VMedial c => reflClitics ! c ;
          VPhrasal c => personalClitics ! c ! GSg Masc ! P3
        } ++ v.s ! Imperf ! VPres Sg P3 ;
    s2= inflVerb v ;
    s3= ""
  } ;

  InflectionV2 v = {
    t = "гл" ;
    s1= heading1 ("Глагол") ++
        pp "подлог" ++
        case v.vtype of {
          VNormal => "" ;
          VMedial c => reflClitics ! c ;
          VPhrasal c => personalClitics ! c ! GSg Masc ! P3
        } ++
        v.s ! Imperf ! VPres Sg P3 ++
        v.c2.s ++
        pp "допълнение";
    s2= inflVerb v ;
    s3= ""
  } ;

  InflectionV3 v = {
    t = "гл" ;
    s1= heading1 ("Глагол") ++
        pp "подлог" ++
        case v.vtype of {
          VNormal => "" ;
          VMedial c => reflClitics ! c ;
          VPhrasal c => personalClitics ! c ! GSg Masc ! P3
        } ++
        v.s ! Imperf ! VPres Sg P3 ++
        v.c2.s ++
        pp "арг1"++
        v.c3.s ++
        pp "арг2";
    s2= inflVerb v ;
    s3= ""
  } ;

  InflectionV2V v = {
    t = "гл" ;
    s1= pp "подлог" ++
        case v.vtype of {
          VNormal => "" ;
          VMedial c => reflClitics ! c ;
          VPhrasal c => personalClitics ! c ! GSg Masc ! P3
        } ++
        v.s ! Imperf ! VPres Sg P3 ++
        v.c2.s ++
        pp "допълнение"++
        v.c3.s ++
        "да" ++ pp "глагол";
    s2= inflVerb v ;
    s3= ""
  } ;

  InflectionV2S v = {
    t = "гл" ;
    s1= pp "подлог" ++
        case v.vtype of {
          VNormal => "" ;
          VMedial c => reflClitics ! c ;
          VPhrasal c => personalClitics ! c ! GSg Masc ! P3
        } ++
        v.s ! Imperf ! VPres Sg P3 ++
        v.c2.s ++
        pp "допълнение"++
        v.c3.s ++
        "че" ++ pp "изречение";
    s2= inflVerb v ;
    s3= ""
  } ;

  InflectionV2Q v = {
    t = "гл" ;
    s1= pp "подлог" ++
        case v.vtype of {
          VNormal => "" ;
          VMedial c => reflClitics ! c ;
          VPhrasal c => personalClitics ! c ! GSg Masc ! P3
        } ++
        v.s ! Imperf ! VPres Sg P3 ++
        v.c2.s ++
        pp "допълнение"++
        v.c3.s ++
        pp "въпрос";
    s2= inflVerb v ;
    s3= ""
  } ;

  InflectionV2A v = {
    t = "гл" ;
    s1= pp "подлог" ++
        case v.vtype of {
          VNormal => "" ;
          VMedial c => reflClitics ! c ;
          VPhrasal c => personalClitics ! c ! GSg Masc ! P3
        } ++
        v.s ! Imperf ! VPres Sg P3 ++
        v.c2.s ++
        pp "допълнение"++
        pp "прилагателно";
    s2= inflVerb v ;
    s3= ""
  } ;

  InflectionVV = \v -> {
    t = "гл" ;
    s1= pp "подлог" ++
        case v.vtype of {
          VNormal => "" ;
          VMedial c => reflClitics ! c ;
          VPhrasal c => personalClitics ! c ! GSg Masc ! P3
        } ++
        v.s ! Imperf ! VPres Sg P3 ++
        case v.typ of {
          VVInf => "да" ++ pp "глагол";
          VVGerund => pp "деепричастие"
        };
    s2= inflVerb v ;
    s3= ""
  } ;

  InflectionVS = \v -> {
    t = "гл" ;
    s1= pp "подлог" ++
        case v.vtype of {
          VNormal => "" ;
          VMedial c => reflClitics ! c ;
          VPhrasal c => personalClitics ! c ! GSg Masc ! P3
        } ++
        v.s ! Imperf ! VPres Sg P3 ++
        "че" ++ pp "изречение";
    s2= inflVerb v ;
    s3= ""
  } ;

  InflectionVQ = \v -> {
    t = "гл" ;
    s1= pp "подлог" ++
        case v.vtype of {
          VNormal => "" ;
          VMedial c => reflClitics ! c ;
          VPhrasal c => personalClitics ! c ! GSg Masc ! P3
        } ++
        v.s ! Imperf ! VPres Sg P3 ++
        pp "въпрос";
    s2= inflVerb v ;
    s3= ""
  } ;

  InflectionVA = \v -> {
    t = "гл" ;
    s1= pp "подлог" ++
        case v.vtype of {
          VNormal => "" ;
          VMedial c => reflClitics ! c ;
          VPhrasal c => personalClitics ! c ! GSg Masc ! P3
        } ++
        v.s ! Imperf ! VPres Sg P3 ++
        pp "прилагателно";
    s2= inflVerb v ;
    s3= ""
  } ;

oper
  inflVerb : Verb -> Str = \v ->
    (heading2 ("Несвършен вид") ++
     heading3 ("Изявително наклонение") ++
     heading4 ("Сегашно време") ++
     finite Imperf VPres ++
     heading4 ("Минало свършено време (аорист)") ++
     finite Imperf VAorist ++
     heading4 ("Минало несвършено време (имперфект)") ++
     finite Imperf VImperfect ++
     heading3 ("Повелително наклонение") ++
     imperative Imperf ++
     heading3 ("Причастия (отглаголни прилагателни)") ++
     heading4 ("Минало страдателно причастие") ++
     participle Imperf VPassive ++
     heading4 ("Минало свършено деятелно причастие") ++
     participle Imperf VPerfect ++
     heading4 ("Минало несвършено деятелно причастие") ++
     participle Imperf VPluPerfect ++
     heading4 ("Сегашно деятелно причастие") ++
     participle Imperf VPresPart ++
     heading2 ("Свършен вид") ++
     heading3 ("Изявително наклонение") ++
     heading4 ("Сегашно време") ++
     finite Perf VPres ++
     heading4 ("Минало свършено време (аорист)") ++
     finite Perf VAorist ++
     heading4 ("Минало несвършено време (имперфект)") ++
     finite Perf VImperfect ++
     heading3 ("Повелително наклонение") ++
     imperative Perf ++
     heading3 ("Причастия (отглаголни прилагателни)") ++
     heading4 ("Минало страдателно причастие") ++
     participle Perf VPassive ++
     heading4 ("Минало свършено деятелно причастие") ++
     participle Perf VPerfect ++
     heading4 ("Минало несвършено деятелно причастие") ++
     participle Perf VPluPerfect ++
     heading1 ("Отглаголно съществително") ++
     frameTable (
       tr (intagAttr "th" "rowspan=\"2\"" "ед.ч." ++ 
           th "нечленувано" ++ td (v.s ! Imperf ! VNoun (NF Sg Indef))) ++
       tr (th "членувано" ++ td (v.s ! Imperf ! VNoun (NF Sg Def))) ++
       tr (intagAttr "th" "rowspan=\"2\"" "мн.ч." ++ 
           th "нечленувано" ++ td (v.s ! Imperf ! VNoun (NF Pl Indef))) ++
       tr (th "членувано" ++ td (v.s ! Imperf ! VNoun (NF Pl Def)))
     ) ++
     heading1 ("Деепричастие (отглаголно наречие)") ++
     paragraph (v.s ! Imperf ! VGerund))
  where {
    finite : Aspect -> (Number -> Person -> VForm) -> Str = \aspect,f ->
      frameTable (
        tr (th "" ++
            th "ед.ч." ++
            th "мн.ч.") ++
        tr (th "1 л." ++ 
            td (v.s ! aspect ! f Sg P1) ++ 
            td (v.s ! aspect ! f Pl P1)) ++
        tr (th "2 л." ++ 
            td (v.s ! aspect ! f Sg P2) ++
            td (v.s ! aspect ! f Pl P2)) ++
        tr (th "3 л." ++
            td (v.s ! aspect ! f Sg P3) ++
            td (v.s ! aspect ! f Pl P3))
      ) ;

    imperative : Aspect -> Str = \aspect ->
      frameTable (
        tr (th "ед.ч." ++
            th "мн.ч.") ++
        tr (td (v.s ! aspect ! VImperative Sg) ++ 
            td (v.s ! aspect ! VImperative Pl))
      ) ;

    participle : Aspect -> (AForm -> VForm) -> Str = \aspect,f ->
      frameTable (
        tr (intagAttr "th" "rowspan=\"7\"" "ед.ч." ++
            intagAttr "th" "rowspan=\"3\"" "м.р." ++
            th "нечленувано" ++
            td (v.s ! aspect ! f (ASg Masc Indef))) ++
        tr (th "непълен член" ++
            td (v.s ! aspect ! f (ASg Masc Def))) ++
        tr (th "пълен член" ++
            td (v.s ! aspect ! f ASgMascDefNom)) ++
        tr (intagAttr "th" "rowspan=\"2\"" "ж.р." ++
            th "нечленувано" ++
            td (v.s ! aspect ! f (ASg Fem Indef))) ++
        tr (th "членувано" ++
            td (v.s ! aspect ! f (ASg Fem Def))) ++
        tr (intagAttr "th" "rowspan=\"2\"" "ср.р." ++
            th "нечленувано" ++
            td (v.s ! aspect ! f (ASg Neut Indef))) ++
        tr (th "членувано" ++
            td (v.s ! aspect ! f (ASg Neut Def))) ++
        tr (intagAttr "th" "rowspan=\"2\" colspan=\"2\"" "мн.ч." ++
            th "нечленувано" ++
            td (v.s ! aspect ! f (APl Indef))) ++
        tr (th "членувано" ++
            td (v.s ! aspect ! f (APl Def)))
      ) ;
  } ;

  pp : Str -> Str = \s -> "<"+s+">";

lin
  MkDocument b i e = {s = i.s1 ++ b.s ++ i.s2 ++ i.s3 ++ e.s} ;
  MkTag i = {s = i.t} ;

}