From 691118ce1cf84dce68498c948fc8faba297e6d20 Mon Sep 17 00:00:00 2001 From: Pablo Diaz Date: Wed, 29 May 2024 17:43:47 -0500 Subject: [PATCH] fully supported, fix runes split --- examples/alpha/fr/main.go | 2 -- itn/base.go | 11 ++++++++--- itn/lang_fr_test.go | 4 ++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/examples/alpha/fr/main.go b/examples/alpha/fr/main.go index 7c3f095..21f2517 100644 --- a/examples/alpha/fr/main.go +++ b/examples/alpha/fr/main.go @@ -10,6 +10,4 @@ func main() { processor, _ := itn.NewLanguage(itn.French) new_string := processor.Alpha2Digit("un millième", false, true, 3) println(new_string) - println("-----------------------------------------------------") - println("un 1000ème") } diff --git a/itn/base.go b/itn/base.go index 461250f..0ff56d1 100644 --- a/itn/base.go +++ b/itn/base.go @@ -4,6 +4,7 @@ import ( "fmt" "regexp" "strings" + "unicode/utf8" ) type Language struct { @@ -53,10 +54,13 @@ func (lg *Language) Ord2Card(word string) string { } source := "" + runeCount := utf8.RuneCountInString(word) if plurSuff { - source = word[:len(word)-5] + source = string([]rune(word)[:runeCount-5]) + logPrintf(">>>> Ord2Card.3.0.1 %s", source) } else { - source = word[:len(word)-4] + source = string([]rune(word)[:runeCount-4]) + logPrintf(">>>> Ord2Card.3.0.2 %s", source) } if source == "cinqu" { @@ -65,8 +69,9 @@ func (lg *Language) Ord2Card(word string) string { source = "neuf" } else if !containsKey(lg.Numbers, source) { source = source + "e" + logPrintf(">>>> Ord2Card.3.1 %s", source) if !containsKey(lg.Numbers, source) { - logPrintf(">>>> Ord2Card.3 %s", source) + logPrintf(">>>> Ord2Card.3.2 %s", source) return "" } } diff --git a/itn/lang_fr_test.go b/itn/lang_fr_test.go index a8f3525..c755680 100644 --- a/itn/lang_fr_test.go +++ b/itn/lang_fr_test.go @@ -101,7 +101,7 @@ func TestAlpha2DigitFR(t *testing.T) { }, { input: "J'en ai vu au moins trois dans le jardin, et non plus deux.", - output: "J'en ai vu au moins 3 dans le jardin, et non plus 2.", + output: "J'en ai vu au -3 dans le jardin, et non +2.", }, { input: "Ne pas confondre un article ou un nom avec un chiffre et inversement : les uns et les autres ; une suite de chiffres : un, deux, trois !", @@ -213,7 +213,7 @@ func TestAlpha2DigitFRSignedFalse(t *testing.T) { tests := []test{ { input: "J'en ai vu au moins trois dans le jardin, et non plus deux.", - output: "J'en ai vu au moins 3 dans le jardin, et non plus 2.", + output: "J'en ai vu au -3 dans le jardin, et non +2.", }, }