extend the names API

This commit is contained in:
Krasimir Angelov
2023-02-07 08:47:34 +01:00
parent a6faaeb351
commit 828bf9c677
33 changed files with 182 additions and 57 deletions
+2 -1
View File
@@ -86,7 +86,8 @@ concrete CatBul of Cat = CommonX - [IAdv,AdV] ** open ResBul, Prelude, Predef, (
N = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ;
N2 = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ** {c2 : Preposition} ;
N3 = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ** {c2,c3 : Preposition} ;
GN, SN = {s : Str; g : Gender} ;
GN = {s : Str; g : Sex} ;
SN = {s : Sex => Str; pl : Str} ;
PN = {s : Str; gn : GenNum} ;
lindef
+11 -15
View File
@@ -92,27 +92,23 @@ lin
s3 = ""
} ;
InflectionGN = \pn -> {
InflectionGN = \gn -> {
t = "същ.с.л." ;
s1= heading1 ("Собствено Име"++
case pn.g of {
Masc => "(м.р.)" ;
Fem => "(ж.р.)" ;
Neut => "(ср.р.)"
s1= heading1 (case gn.g of {
Male => "Мъжко Име" ;
Female => "Женско Име"
}) ;
s2 = pn.s ;
s2 = gn.s ;
s3 = ""
} ;
InflectionSN = \pn -> {
InflectionSN = \sn -> {
t = "същ.с.ф." ;
s1= heading1 ("Фамилно Име"++
case pn.g of {
Masc => "(м.р.)" ;
Fem => "(ж.р.)" ;
Neut => "(ср.р.)"
}) ;
s2 = pn.s ;
s1= heading1 ("Фамилно Име") ;
s2 = frameTable (
tr (th "мъжко" ++ td (sn.s ! Male)) ++
tr (th "женско" ++ td (sn.s ! Female)) ++
tr (th "семейно" ++ td sn.pl)) ;
s3 = ""
} ;
+16 -4
View File
@@ -300,13 +300,25 @@ lin UseDAP dap = {
p = NounP3 dap.p
} ;
lin GivenName, Surname = \n -> {
lin GivenName = \n -> {
s = n.s ;
gn = GSg n.g
gn = GSg (sex2gender n.g)
} ;
lin MaleSurname = \n -> {
s = n.s ! Male ;
gn = GSg Masc
} ;
lin FemaleSurname = \n -> {
s = n.s ! Female;
gn = GSg Fem
} ;
lin PlSurname = \n -> {
s = n.pl ;
gn = GPl
} ;
lin FullName gn sn = {
s = gn.s ++ sn.s ;
gn = GSg gn.g
s = gn.s ++ sn.s ! gn.g ;
gn = GSg (sex2gender gn.g)
} ;
}
+7 -4
View File
@@ -271,13 +271,16 @@ oper
feminine : Gender = Fem ;
neutr : Gender = Neut ;
mkGN : Str -> Gender -> GN =
male : Sex = Male ;
female : Sex = Female ;
mkGN : Str -> Sex -> GN =
\s,g -> lin GN {s = s; g = g} ;
mkSN = overload {
mkSN : Str -> SN =
\s -> lin SN {s = s; g = Masc} ;
mkSN : Str -> Gender -> SN =
\s,g -> lin SN {s = s; g = g} ;
\s -> lin SN {s = \\_ => s; pl = s} ;
mkSN : Str -> Str -> Str -> SN =
\m,f,pl -> lin SN {s = table Sex [m; f]; pl = pl} ;
} ;
mkPN = overload {
+9 -1
View File
@@ -47,7 +47,8 @@ resource ResBul = ParamX ** open Prelude, Predef in {
param
Gender = Masc | Fem | Neut ;
Sex = Male | Female ;
Species = Indef | Def ;
-- The plural never makes a gender distinction.
@@ -851,4 +852,11 @@ resource ResBul = ParamX ** open Prelude, Predef in {
APl Indef => "свои" ;
APl Def => "своите"
} ;
sex2gender : Sex -> Gender = \g ->
case g of {
Male => Masc ;
Female => Fem
} ;
}