From 6a3dcc6a382f69fbd6fe990e163cc69ddb8ca95e Mon Sep 17 00:00:00 2001 From: nhmall Date: Sat, 16 Nov 2019 10:08:21 -0500 Subject: [PATCH] more pluralization --- src/objnam.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/objnam.c b/src/objnam.c index ba301b9cf..3eea10d94 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -2205,6 +2205,11 @@ const char *const *alt_as_is; /* another set like as_is[] */ } } + /* Leave "craft" as a suffix as-is (aircraft, hovercraft); + "craft" itself is (arguably) not included in our likely context */ + if ((baselen > 5) && (!BSTRCMPI(basestr, endstring - 5, "craft"))) + return TRUE; + /* avoid false hit on one_off[].plur == "lice" or .sing == "goose"; if more of these turn up, one_off[] entries will need to flagged as to which are whole words and which are matchable as suffices @@ -2215,6 +2220,7 @@ const char *const *alt_as_is; /* another set like as_is[] */ Strcasecpy(endstring, "s"); return TRUE; } + /* skip "ox" -> "oxen" entry when pluralizing "ox" unless it is muskox */ if (to_plural && baselen > 2 && !strcmpi(endstring - 2, "ox") @@ -2435,10 +2441,7 @@ const char *oldstr; /* Ends in z, x, s, ch, sh; add an "es" */ if (index("zxs", lo_c) - || (len >= 2 && lo_c == 'h' && index("cs", lowc(*(spot - 1))) - /* 21st century k-sound */ - && !(len >= 4 && !strcmpi(spot - 2, "ech") - && index("tm", lowc(*(spot - 4))))) + || (len >= 2 && lo_c == 'h' && index("cs", lowc(*(spot - 1)))) /* Kludge to get "tomatoes" and "potatoes" right */ || (len >= 4 && !strcmpi(spot - 2, "ato")) || (len >= 5 && !strcmpi(spot - 4, "dingo"))) { -- 2.49.0