1
0
forked from GitHub/gf-rgl

the names API in more languages

This commit is contained in:
Krasimir Angelov
2023-08-16 19:39:22 +02:00
parent d25d648134
commit 6bc965f6c2
69 changed files with 1584 additions and 270 deletions

View File

@@ -40,6 +40,42 @@ lin
)
} ;
InflectionGN = \gn -> {
t = "pn" ;
s1 = heading1 ("Prenom" ++
case gn.g of {
Masc => "("+heading masculine_Parameter+")" ;
Fem => "("+heading feminine_Parameter+")"
}) ;
s2 = gn.s
} ;
InflectionSN = \gn -> {
t = "pn" ;
s1 = heading1 "Família" ;
s2 = gn.s ! Masc
} ;
InflectionPN = \pn -> {
t = "pn" ;
s1 = heading1 ("Nom Propi" ++
case pn.g of {
Masc => "("+heading masculine_Parameter+")" ;
Fem => "("+heading feminine_Parameter+")"
}) ;
s2 = pn.s
} ;
InflectionLN = \ln -> {
t = "nl" ;
s1 = heading1 ("Nom de la Ubicació" ++
case ln.g of {
Masc => "("+heading masculine_Parameter+")" ;
Fem => "("+heading feminine_Parameter+")"
}) ;
s2 = paragraph ln.s
} ;
InflectionA, InflectionA2 = \adj -> {
t = "a" ;
s1 = heading1 (nounHeading adjective_Category).s ;

View File

@@ -1,9 +1,41 @@
concrete NamesCat of Names = CatCat ** open ResCat in {
concrete NamesCat of Names = CatCat ** open ResCat, CommonRomance, Prelude in {
lin GivenName, MaleSurname, FemaleSurname = \n -> pn2np n ;
lin GivenName = \n -> pn2np n ;
lin MaleSurname = \n -> pn2np {s = n.s ! Masc; g = Masc} ;
lin FemaleSurname = \n -> pn2np {s = n.s ! Fem; g = Fem} ;
lin PlSurname = \n -> heavyNPpol False {
s = \\c => prepCase c ++ n.pl ;
a = agrP3 Masc Pl
} ;
lin FullName gn sn = pn2np {
s = gn.s ++ sn.s ;
s = gn.s ++ sn.s ! gn.g ;
g = gn.g
} ;
lin PlainLN n = heavyNP {
s = \\c => n.s;
a = {g = n.g ; n = n.num ; p = P3}
} ;
lin UseLN n = heavyNP {
s = \\c => case n.art of {
UseArt => artDef True n.g n.num c ++ n.s ;
_ => n.s
} ;
a = {g = n.g ; n = n.num ; p = P3}
} ;
lin InLN n = {
s = "en" ++ case n.art of {
UseArt => artDef True n.g n.num Acc ++ n.s;
_ => prepCase Acc ++ n.s
} ;
} ;
lin AdjLN ap n = n ** {
s = preOrPost ap.isPre (ap.s ! AF n.g n.num) n.s ;
} ;
}

View File

@@ -139,12 +139,39 @@ oper
mkPN : N -> PN ;
} ;
mkLN : Str -> LN = \s ->
lin LN {s = s ;
p = {s=""; c=CPrep P_a; isDir=True} ;
art = NoArt ;
g = Masc ;
num = Sg} ;
mkGN = overload {
mkGN : (Anna : Str) -> GN = \s -> lin GN (regPN s) ; -- feminine for "-a", otherwise masculine
mkGN : (Pilar : Str) -> Gender -> GN = \s,g -> lin GN (mk2PN s g) ; -- force gender
} ;
mkSN = overload {
mkSN : Str -> SN = \s -> lin SN {s = \\_ => s; pl = s} ;
mkSN : Str -> Str -> Str -> SN = \male,female,pl -> lin SN {s = table {Masc=>male; Fem=>female}; pl = pl} ;
} ;
mkLN = overload {
mkLN : Str -> LN = \s ->
lin LN {s = s ;
onPrep=False ;
art = NoArt ;
g = Masc ;
num = Sg} ;
mkLN : Str -> Gender -> LN = \s,g ->
lin LN {s = s ;
onPrep=False ;
art = NoArt ;
g = g ;
num = Sg} ;
mkLN : Str -> Gender -> Number -> LN = \s,g,n ->
lin LN {s = s ;
onPrep=False ;
art = NoArt ;
g = g ;
num = n}
} ;
defLN : LN -> LN = \n -> n ** {art = UseArt} ;
--2 Adjectives
@@ -308,6 +335,8 @@ oper
CopulaType = DiffCat.CopulaType ;
masculine = Masc ;
feminine = Fem ;
male = Masc ;
female = Fem ;
singular = Sg ;
plural = Pl ;
serCopula = DiffCat.serCopula ;