1
0
forked from GitHub/gf-rgl

comma instead of dot and space separator in Romance decimals

This commit is contained in:
Krasimir Angelov
2024-01-31 12:02:46 +01:00
parent b746a425d5
commit a8b0e5d94b
6 changed files with 86 additions and 21 deletions

View File

@@ -140,11 +140,12 @@ param
Dig = TDigit ; Dig = TDigit ;
lin lin
IDig d = d ; IDig d = d ** {tail = T1} ;
IIDig d i = { IIDig d i = {
s = \\o => d.s ! NCard Masc ++ BIND ++ i.s ! o ; s = \\o => d.s ! NCard Masc ++ spaceIf i.tail ++ i.s ! o ;
n = Pl n = Pl ;
tail = inc i.tail
} ; } ;
D_0 = mkDig "0" ; D_0 = mkDig "0" ;
@@ -166,12 +167,24 @@ param
} ; } ;
IFrac d i = { IFrac d i = {
s = \\o => d.s ! NCard Masc ++ s = \\o => d.s ! NCard Masc ++
if_then_Str d.hasDot BIND (BIND++"."++BIND) ++ if_then_Str d.hasDot BIND (BIND++","++BIND) ++
i.s ! o ; i.s ! o ;
n = Pl ; n = Pl ;
hasDot=True hasDot=True
} ; } ;
oper
spaceIf : DTail -> Str = \t -> case t of {
T3 => SOFT_SPACE ;
_ => BIND
} ;
inc : DTail -> DTail = \t -> case t of {
T1 => T2 ;
T2 => T3 ;
T3 => T1
} ;
oper oper
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ; mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
mkDig : Str -> TDigit = \c -> mk2Dig c (c + ":o") ; mkDig : Str -> TDigit = \c -> mk2Dig c (c + ":o") ;

View File

@@ -153,11 +153,12 @@ oper hyphen = BIND ++ "-" ++ BIND ;
Dig = TDigit ; Dig = TDigit ;
lin lin
IDig d = d ; IDig d = d ** {tail = T1} ;
IIDig d i = { IIDig d i = {
s = \\o => d.s ! NCard Masc ++ BIND ++ i.s ! o ; s = \\o => d.s ! NCard Masc ++ spaceIf i.tail ++ i.s ! o ;
n = Pl n = Pl ;
tail = inc i.tail
} ; } ;
D_0 = mkDig "0" ; D_0 = mkDig "0" ;
@@ -179,12 +180,24 @@ oper hyphen = BIND ++ "-" ++ BIND ;
} ; } ;
IFrac d i = { IFrac d i = {
s = \\o => d.s ! NCard Masc ++ s = \\o => d.s ! NCard Masc ++
if_then_Str d.hasDot BIND (BIND++"."++BIND) ++ if_then_Str d.hasDot BIND (BIND++","++BIND) ++
i.s ! o ; i.s ! o ;
n = Pl ; n = Pl ;
hasDot=True hasDot=True
} ; } ;
oper
spaceIf : DTail -> Str = \t -> case t of {
T3 => SOFT_SPACE ;
_ => BIND
} ;
inc : DTail -> DTail = \t -> case t of {
T1 => T2 ;
T2 => T3 ;
T3 => T1
} ;
oper oper
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ; mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "ème") ; mkDig : Str -> TDigit = \c -> mk2Dig c (c + "ème") ;

View File

@@ -120,11 +120,12 @@ param Pred = pred | indip ;
Dig = TDigit ; Dig = TDigit ;
lin lin
IDig d = d ; IDig d = d ** {tail = T1} ;
IIDig d i = { IIDig d i = {
s = \\o => d.s ! NCard Masc ++ BIND ++ i.s ! o ; s = \\o => d.s ! NCard Masc ++ spaceIf i.tail ++ i.s ! o ;
n = Pl n = Pl ;
tail = inc i.tail
} ; } ;
D_0 = mkDig "0" ; D_0 = mkDig "0" ;
@@ -146,12 +147,24 @@ param Pred = pred | indip ;
} ; } ;
IFrac d i = { IFrac d i = {
s = \\o => d.s ! NCard Masc ++ s = \\o => d.s ! NCard Masc ++
if_then_Str d.hasDot BIND (BIND++"."++BIND) ++ if_then_Str d.hasDot BIND (BIND++","++BIND) ++
i.s ! o; i.s ! o;
n = Pl ; n = Pl ;
hasDot=True hasDot=True
} ; } ;
oper
spaceIf : DTail -> Str = \t -> case t of {
T3 => SOFT_SPACE ;
_ => BIND
} ;
inc : DTail -> DTail = \t -> case t of {
T1 => T2 ;
T2 => T3 ;
T3 => T1
} ;
oper oper
mkDig : Str -> TDigit = \c -> mk2Dig c Pl ; mkDig : Str -> TDigit = \c -> mk2Dig c Pl ;

View File

@@ -189,11 +189,12 @@ concrete NumeralPor of Numeral = CatPor [Numeral,Digits,Decimal] **
Dig = TDigit ; Dig = TDigit ;
lin lin
IDig d = d ; IDig d = d ** {tail = T1} ;
IIDig d i = { IIDig d i = {
s = \\o => d.s ! NCard Masc ++ BIND ++ i.s ! o ; s = \\o => d.s ! NCard Masc ++ spaceIf i.tail ++ i.s ! o ;
n = Pl n = Pl ;
tail = inc i.tail
} ; } ;
D_0 = mkDig "0" Sg ; D_0 = mkDig "0" Sg ;
@@ -215,12 +216,24 @@ concrete NumeralPor of Numeral = CatPor [Numeral,Digits,Decimal] **
} ; } ;
IFrac d i = { IFrac d i = {
s = \\o => d.s ! NCard Masc ++ s = \\o => d.s ! NCard Masc ++
if_then_Str d.hasDot BIND (BIND++"."++BIND) ++ if_then_Str d.hasDot BIND (BIND++","++BIND) ++
i.s ! o; i.s ! o;
n = Pl ; n = Pl ;
hasDot=True hasDot=True
} ; } ;
oper
spaceIf : DTail -> Str = \t -> case t of {
T3 => SOFT_SPACE ;
_ => BIND
} ;
inc : DTail -> DTail = \t -> case t of {
T1 => T2 ;
T2 => T3 ;
T3 => T1
} ;
oper oper
mk4Dig : Str -> Str -> Str -> Number -> TDigit = \c,o,a,n -> { mk4Dig : Str -> Str -> Str -> Number -> TDigit = \c,o,a,n -> {
s = table { s = table {

View File

@@ -89,7 +89,7 @@ incomplete concrete CatRomance of Cat = CommonX - [SC,Pol,MU]
-- Numeral -- Numeral
Numeral = {s : CardOrd => Str ; n : Number} ; Numeral = {s : CardOrd => Str ; n : Number} ;
Digits = {s : CardOrd => Str ; n : Number} ; Digits = {s : CardOrd => Str ; n : Number ; tail : DTail} ;
Decimal = {s : CardOrd => Str ; n : Number ; hasDot : Bool} ; Decimal = {s : CardOrd => Str ; n : Number ; hasDot : Bool} ;
-- Structural -- Structural

View File

@@ -114,11 +114,12 @@ param
Dig = TDigit ; Dig = TDigit ;
lin lin
IDig d = d ; IDig d = d ** {tail = T1} ;
IIDig d i = { IIDig d i = {
s = \\o => d.s ! NCard Masc ++ BIND ++ i.s ! o ; s = \\o => d.s ! NCard Masc ++ spaceIf i.tail ++ i.s ! o ;
n = Pl n = Pl ;
tail = inc i.tail
} ; } ;
D_0 = mkDig "0" ; D_0 = mkDig "0" ;
@@ -140,12 +141,24 @@ param
} ; } ;
IFrac d i = { IFrac d i = {
s = \\o => d.s ! NCard Masc ++ s = \\o => d.s ! NCard Masc ++
if_then_Str d.hasDot BIND (BIND++"."++BIND) ++ if_then_Str d.hasDot BIND (BIND++","++BIND) ++
i.s ! o ; i.s ! o ;
n = Pl ; n = Pl ;
hasDot=True hasDot=True
} ; } ;
oper
spaceIf : DTail -> Str = \t -> case t of {
T3 => SOFT_SPACE ;
_ => BIND
} ;
inc : DTail -> DTail = \t -> case t of {
T1 => T2 ;
T2 => T3 ;
T3 => T1
} ;
oper oper
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ; mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
mkDig : Str -> TDigit = \c -> mk2Dig c (c + ":o") ; mkDig : Str -> TDigit = \c -> mk2Dig c (c + ":o") ;