[agent/codex:gpt-5.4-mini] Read ~/spec/code/core/go/i18n/RFC.md fully. Find ONE feature... #37
2 changed files with 31 additions and 0 deletions
29
grammar.go
29
grammar.go
|
|
@ -452,6 +452,9 @@ func articleForCurrentLanguage(lowerWord, originalWord string) (string, bool) {
|
|||
return "", false
|
||||
}
|
||||
|
||||
if article, ok := articleForPluralForm(data, lowerWord, lang); ok {
|
||||
return article, true
|
||||
}
|
||||
if article, ok := articleByGender(data, lowerWord, originalWord, lang); ok {
|
||||
return article, true
|
||||
}
|
||||
|
|
@ -476,6 +479,32 @@ func articleByGender(data *GrammarData, lowerWord, originalWord, lang string) (s
|
|||
return maybeElideArticle(article, originalWord, lang), true
|
||||
}
|
||||
|
||||
func articleForPluralForm(data *GrammarData, lowerWord, lang string) (string, bool) {
|
||||
if !isFrenchLanguage(lang) {
|
||||
return "", false
|
||||
}
|
||||
if !isKnownPluralNoun(data, lowerWord) {
|
||||
return "", false
|
||||
}
|
||||
return "les", true
|
||||
}
|
||||
|
||||
func isKnownPluralNoun(data *GrammarData, lowerWord string) bool {
|
||||
if data == nil || len(data.Nouns) == 0 {
|
||||
return false
|
||||
}
|
||||
for _, forms := range data.Nouns {
|
||||
if forms.Other == "" || core.Lower(forms.Other) != lowerWord {
|
||||
continue
|
||||
}
|
||||
if forms.One != "" && core.Lower(forms.One) == lowerWord {
|
||||
continue
|
||||
}
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func articleFromGrammarForms(data *GrammarData, word string) (string, bool) {
|
||||
if data.Articles.IndefiniteDefault == "" && data.Articles.IndefiniteVowel == "" {
|
||||
return "", false
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ func TestArticleFrenchLocale(t *testing.T) {
|
|||
want string
|
||||
}{
|
||||
{"branche", "la"},
|
||||
{"branches", "les"},
|
||||
{"enfant", "l'"},
|
||||
{"fichier", "le"},
|
||||
{"inconnu", "un"},
|
||||
|
|
@ -510,6 +511,7 @@ func TestArticlePhraseFrenchLocale(t *testing.T) {
|
|||
want string
|
||||
}{
|
||||
{"branche", "la branche"},
|
||||
{"branches", "les branches"},
|
||||
{"enfant", "l'enfant"},
|
||||
{"fichier", "le fichier"},
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue