Skip to content

Commit

Permalink
Merge pull request #34 from allo-media/spanish-fixes
Browse files Browse the repository at this point in the history
[ship] Spanish fixes
  • Loading branch information
rtxm authored Jun 28, 2024
2 parents 2640f59 + f38def0 commit 4ec9fdc
Showing 1 changed file with 27 additions and 24 deletions.
51 changes: 27 additions & 24 deletions src/lang/es/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -147,17 +147,17 @@ impl LangInterpretor for Spanish {
"primer" => MorphologicalMarker::Ordinal(".ᵉʳ"),
"primero" | "segundo" | "tercero" | "cuarto" | "quinto" | "sexto" | "séptimo"
| "octavo" | "ctavo" | "noveno" => {
MorphologicalMarker::Ordinal(if is_plur { ".ᵒˢ" } else { ".º" })
MorphologicalMarker::Ordinal(if is_plur { "ᵒˢ" } else { "º" })
}
"primera" | "segunda" | "tercera" | "cuarta" | "quinta" | "sexta" | "séptima"
| "octava" | "ctava" | "novena" => {
MorphologicalMarker::Ordinal(if is_plur { ".ᵃˢ" } else { ".ª" })
MorphologicalMarker::Ordinal(if is_plur { "ᵃˢ" } else { "ª" })
}
ord if ord.ends_with("imo") => {
MorphologicalMarker::Ordinal(if is_plur { ".ᵒˢ" } else { ".º" })
MorphologicalMarker::Ordinal(if is_plur { "ᵒˢ" } else { "º" })
}
ord if ord.ends_with("ima") => {
MorphologicalMarker::Ordinal(if is_plur { ".ᵃˢ" } else { ".ª" })
MorphologicalMarker::Ordinal(if is_plur { "ᵃˢ" } else { "ª" })
}
ord if ord.ends_with("avo") => MorphologicalMarker::Fraction("avo"),
_ => MorphologicalMarker::None,
Expand Down Expand Up @@ -273,21 +273,22 @@ mod tests {
fn test_variants() {
assert_text2digits!("un millon", "1000000");
assert_text2digits!("un millón", "1000000");
assert_text2digits!("décimo primero", "11.º");
assert_text2digits!("decimoprimero", "11.º");
assert_text2digits!("undécimo", "11.º");
assert_text2digits!("décimo segundo", "12.º");
assert_text2digits!("decimosegundo", "12.º");
assert_text2digits!("duodécimo", "12.º");
assert_text2digits!("décimo primero", "11º");
assert_text2digits!("decimoprimero", "11º");
assert_text2digits!("undécimo", "11º");
assert_text2digits!("décimo segundo", "12º");
assert_text2digits!("decimosegundo", "12º");
assert_text2digits!("duodécimo", "12º");
}

#[test]
fn test_ordinals() {
assert_text2digits!("vigésimo cuarto", "24.º");
assert_text2digits!("vigésimo primero", "21.º");
assert_text2digits!("decimosexta", "16.ª");
assert_text2digits!("decimosextas", "16.ᵃˢ");
assert_text2digits!("decimosextos", "16.ᵒˢ");
assert_text2digits!("vigésimo cuarto", "24º");
assert_text2digits!("vigésimo primero", "21º");
assert_text2digits!("centésimo primero", "101º");
assert_text2digits!("decimosexta", "16ª");
assert_text2digits!("decimosextas", "16ᵃˢ");
assert_text2digits!("decimosextos", "16ᵒˢ");
}

#[test]
Expand All @@ -300,6 +301,7 @@ mod tests {
#[test]
fn test_zeroes() {
assert_text2digits!("cero", "0");
assert_text2digits!("cero uno", "01");
assert_text2digits!("cero ocho", "08");
assert_text2digits!("cero cero ciento veinticinco", "00125");
assert_invalid!("cinco cero");
Expand Down Expand Up @@ -358,29 +360,30 @@ mod tests {
assert_replace_numbers!("trece mil cero noventa", "13000 090");
assert_replace_numbers!("cero", "cero");
assert_replace_numbers!("cero cinco", "05");
assert_replace_numbers!("cero uno ochenta y cinco", "01 85");
assert_replace_numbers!("cero, cinco", "0, 5");
}

#[test]
fn test_replace_numbers_ordinals() {
assert_replace_numbers!(
"Cuarto quinto segundo tercero vigésimo primero centésimo milésimo ducentésimo trigésimo.",
"4.º 5.º segundo 3.º 21.º 100230.º."
"4º 5º segundo 3º 21º 100230º."
);
assert_replace_numbers!("centésimo trigésimo segundo", "132.º");
assert_replace_numbers!("centésimo, trigésimo, segundo", "100.º, 30.º, segundo");
assert_replace_numbers!("centésimo trigésimo segundo", "132º");
assert_replace_numbers!("centésimo, trigésimo, segundo", "100º, 30º, segundo");
assert_replace_numbers!(
"Un segundo por favor! Vigésimo segundo es diferente que veinte segundos.",
"Un segundo por favor! 22.º es diferente que 20 segundos."
"Un segundo por favor! 22º es diferente que 20 segundos."
);
assert_replace_numbers!(
"Un segundo por favor! Vigésimos segundos es diferente que veinte segundos.",
"Un segundo por favor! 22.ᵒˢ es diferente que 20 segundos."
"Un segundo por favor! 22ᵒˢ es diferente que 20 segundos."
);
assert_replace_all_numbers!("Él ha quedado tercero", "Él ha quedado 3.º");
assert_replace_all_numbers!("Ella ha quedado tercera", "Ella ha quedado 3.ª");
assert_replace_all_numbers!("Ellos han quedado terceros", "Ellos han quedado 3.ᵒˢ");
assert_replace_all_numbers!("Ellas han quedado terceras", "Ellas han quedado 3.ᵃˢ");
assert_replace_all_numbers!("Él ha quedado tercero", "Él ha quedado ");
assert_replace_all_numbers!("Ella ha quedado tercera", "Ella ha quedado ");
assert_replace_all_numbers!("Ellos han quedado terceros", "Ellos han quedado 3ᵒˢ");
assert_replace_all_numbers!("Ellas han quedado terceras", "Ellas han quedado 3ᵃˢ");
}

#[test]
Expand Down

0 comments on commit 4ec9fdc

Please sign in to comment.