From fe62a4b8a2b1137faec4ae38a247ecbb2d499ebb Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sun, 18 Mar 2018 20:57:09 +0100 Subject: ... --- internal/plural/plural.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 internal/plural/plural.go (limited to 'internal/plural/plural.go') diff --git a/internal/plural/plural.go b/internal/plural/plural.go new file mode 100644 index 0000000..a0b6d2e --- /dev/null +++ b/internal/plural/plural.go @@ -0,0 +1,36 @@ +package plural + +import "strings" + +func Plural(s string) string { + l := len(s) + switch { + case strings.HasSuffix(s, "y"): + return s[:l-1] + "ies" + case strings.HasSuffix(s, "us"): + return s[:l-2] + "i" + case strings.HasSuffix(s, "ch"), + strings.HasSuffix(s, "x"), + strings.HasSuffix(s, "s"): + return s + "es" + case strings.HasSuffix(s, "f"): + return s[:l-1] + "ves" + case strings.HasSuffix(s, "man"), + strings.HasSuffix(s, "Man"): + return s[:l-2] + "en" + default: + return s + "s" + } +} + +func Indefinite(s string, n int) string { + if strings.IndexByte("AEIOUÜaeiouü", s[0]) > 0 { + s = "an " + s + } else { + s = "a " + s + } + if n > 1 { + s = Plural(s) + } + return s +} -- cgit v1.2.3