[agent/codex:gpt-5.4-mini] Read ~/spec/code/core/go/i18n/RFC.md fully. Find ONE feature... #106

Merged
Virgil merged 1 commit from agent/read---spec-code-core-go-i18n-rfc-md-ful into dev 2026-04-02 03:57:22 +00:00
2 changed files with 47 additions and 0 deletions

View file

@ -683,6 +683,9 @@ func (t *Tokeniser) MatchArticle(word string) (string, bool) {
}
}
if t.isFrenchLanguage() {
if artType, ok := matchFrenchLeadingArticlePhrase(lower); ok {
return artType, true
}
if artType, ok := matchFrenchArticleText(lower); ok {
return artType, true
}
@ -704,6 +707,41 @@ func (t *Tokeniser) MatchArticle(word string) (string, bool) {
return "", false
}
func matchFrenchLeadingArticlePhrase(lower string) (string, bool) {
switch {
case lower == "le", lower == "la", lower == "les",
lower == "l'", lower == "l", lower == "au", lower == "aux":
return "definite", true
case lower == "un", lower == "une", lower == "du", lower == "des":
return "indefinite", true
}
for _, prefix := range []struct {
text string
kind string
}{
{text: "le ", kind: "definite"},
{text: "la ", kind: "definite"},
{text: "les ", kind: "definite"},
{text: "un ", kind: "indefinite"},
{text: "une ", kind: "indefinite"},
{text: "du ", kind: "indefinite"},
{text: "des ", kind: "indefinite"},
{text: "au ", kind: "definite"},
{text: "aux ", kind: "definite"},
{text: "l'", kind: "definite"},
{text: "l", kind: "definite"},
{text: "d'", kind: "indefinite"},
{text: "d", kind: "indefinite"},
} {
if strings.HasPrefix(lower, prefix.text) {
return prefix.kind, true
}
}
return "", false
}
func matchFrenchArticleText(lower string) (string, bool) {
switch {
case strings.HasPrefix(lower, "de l'"), strings.HasPrefix(lower, "de l"):

View file

@ -218,13 +218,22 @@ func TestTokeniser_MatchArticle_FrenchGendered(t *testing.T) {
}{
{"le", "definite", true},
{"la", "definite", true},
{"le serveur", "definite", true},
{"la branche", "definite", true},
{"les amis", "definite", true},
{"Le", "definite", true},
{"La", "definite", true},
{"Un enfant", "indefinite", true},
{"Une amie", "indefinite", true},
{"de la", "indefinite", true},
{"de l'", "indefinite", true},
{"de l", "indefinite", true},
{"du serveur", "indefinite", true},
{"des amis", "indefinite", true},
{"un", "indefinite", true},
{"une", "indefinite", true},
{"l'enfant", "definite", true},
{"lami", "definite", true},
}
for _, tt := range tests {