1
0
forked from GitHub/gf-rgl

(Fin) Allow punctuation after abbreviations

This commit is contained in:
Inari Listenmaa
2022-10-21 10:43:42 +02:00
parent 96f4543c4c
commit 54d4a762d6

View File

@@ -288,35 +288,41 @@ resource MorphoFin = ResFin ** open Prelude in {
(jalaksi + "n" + a) (jalaksi + "ss" + a) (jalaksi + "in") ; (jalaksi + "n" + a) (jalaksi + "ss" + a) (jalaksi + "in") ;
dSDP : Str -> NForms = \SDP -> dSDP : Str -> NForms = \SDP ->
let let c : Str*Str*Str*Str*Str*Str*Str*Str*Str = case SDP of {
c = case Predef.toUpper (last SDP) of { _ + P@? + (")"|"]"|"!"|"?"|"-") -- ignore punctuation after vowel, e.g. Poly(A):n
"A" => => getCases P SDP ;
<"n","ta","na","han","iden","ita","ina","issa","ihin"> ; _ + P@? => getCases P SDP } ;
"B" | "C" | "D" | "E" | "G" | "P" | "T" | "V" | "W" =>
<"n","tä","nä","hen","iden","itä","inä","issä","ihin"> ;
"F" | "L" | "M" | "N" | "R" | "S" | "X" =>
<"n","ää","nä","ään","ien","iä","inä","issä","iin"> ;
"H" | "K" | "O" | "Å" =>
<"n","ta","na","hon","iden","ita","ina","issa","ihin"> ;
"I" | "J" =>
<"n","tä","nä","hin","iden","itä","inä","issä","ihin"> ;
"Q" | "U" =>
<"n","ta","na","hun","iden","ita","ina","issa","ihin"> ;
"Z" =>
<"n","aa","na","aan","ojen","oja","oina","oissa","oihin"> ;
"Ä" =>
<"n","tä","nä","hän","iden","itä","inä","issä","ihin"> ;
"Ö" =>
<"n","tä","nä","hön","iden","itä","inä","issä","ihin"> ;
"Y" =>
<"n","tä","nä","hyn","iden","itä","inä","issä","ihin"> ;
_ => Predef.error (["illegal abbreviation"] ++ SDP)
} ;
in nForms10 in nForms10
SDP (SDP + ":" + c.p1) (SDP + ":" + c.p2) (SDP + ":" + c.p3) SDP (SDP + ":" + c.p1) (SDP + ":" + c.p2) (SDP + ":" + c.p3)
(SDP + ":" + c.p4) (SDP + ":" + c.p5) (SDP + ":" + c.p6) (SDP + ":" + c.p4) (SDP + ":" + c.p5) (SDP + ":" + c.p6)
(SDP + ":" + c.p7) (SDP + ":" + c.p8) (SDP + ":" + c.p9) ; (SDP + ":" + c.p7) (SDP + ":" + c.p8) (SDP + ":" + c.p9) ;
-- Helper function for dSDP
getCases : Str -> Str -> Str*Str*Str*Str*Str*Str*Str*Str*Str ;
getCases c errorMsg = case Predef.toUpper c of {
"A" =>
<"n","ta","na","han","iden","ita","ina","issa","ihin"> ;
"B" | "C" | "D" | "E" | "G" | "P" | "T" | "V" | "W" =>
<"n","tä","nä","hen","iden","itä","inä","issä","ihin"> ;
"F" | "L" | "M" | "N" | "R" | "S" | "X" =>
<"n","ää","nä","ään","ien","iä","inä","issä","iin"> ;
"H" | "K" | "O" | "Å" =>
<"n","ta","na","hon","iden","ita","ina","issa","ihin"> ;
"I" | "J" =>
<"n","tä","nä","hin","iden","itä","inä","issä","ihin"> ;
"Q" | "U" =>
<"n","ta","na","hun","iden","ita","ina","issa","ihin"> ;
"Z" =>
<"n","aa","na","aan","ojen","oja","oina","oissa","oihin"> ;
"Ä" =>
<"n","tä","nä","hän","iden","itä","inä","issä","ihin"> ;
"Ö" =>
<"n","tä","nä","hön","iden","itä","inä","issä","ihin"> ;
"Y" =>
<"n","tä","nä","hyn","iden","itä","inä","issä","ihin"> ;
_ => Predef.error (["illegal abbreviation"] ++ errorMsg) } ;
-- for adjective comparison -- for adjective comparison
dSuurempi : Str -> NForms = \suurempi -> dSuurempi : Str -> NForms = \suurempi ->