Files
stash/vendor/github.com/gobuffalo/flect/plural_rules.go
2019-02-09 04:32:50 -08:00

241 lines
5.9 KiB
Go

package flect
var pluralRules = []rule{}
// AddPlural adds a rule that will replace the given suffix with the replacement suffix.
func AddPlural(suffix string, repl string) {
pluralMoot.Lock()
defer pluralMoot.Unlock()
pluralRules = append(pluralRules, rule{
suffix: suffix,
fn: func(s string) string {
s = s[:len(s)-len(suffix)]
return s + repl
},
})
pluralRules = append(pluralRules, rule{
suffix: repl,
fn: noop,
})
}
var singleToPlural = map[string]string{
"human": "humans",
"matrix": "matrices",
"vertix": "vertices",
"index": "indices",
"mouse": "mice",
"louse": "lice",
"ress": "resses",
"ox": "oxen",
"quiz": "quizzes",
"series": "series",
"octopus": "octopi",
"equipment": "equipment",
"information": "information",
"rice": "rice",
"money": "money",
"species": "species",
"fish": "fish",
"sheep": "sheep",
"jeans": "jeans",
"police": "police",
"dear": "dear",
"goose": "geese",
"tooth": "teeth",
"foot": "feet",
"bus": "buses",
"fez": "fezzes",
"piano": "pianos",
"halo": "halos",
"photo": "photos",
"aircraft": "aircraft",
"alumna": "alumnae",
"alumnus": "alumni",
"analysis": "analyses",
"antenna": "antennas",
"antithesis": "antitheses",
"apex": "apexes",
"appendix": "appendices",
"axis": "axes",
"bacillus": "bacilli",
"bacterium": "bacteria",
"basis": "bases",
"beau": "beaus",
"bison": "bison",
"bureau": "bureaus",
"campus": "campuses",
"château": "châteaux",
"codex": "codices",
"concerto": "concertos",
"corpus": "corpora",
"crisis": "crises",
"curriculum": "curriculums",
"deer": "deer",
"diagnosis": "diagnoses",
"die": "dice",
"dwarf": "dwarves",
"ellipsis": "ellipses",
"erratum": "errata",
"faux pas": "faux pas",
"focus": "foci",
"formula": "formulas",
"fungus": "fungi",
"genus": "genera",
"graffito": "graffiti",
"grouse": "grouse",
"half": "halves",
"hoof": "hooves",
"hypothesis": "hypotheses",
"larva": "larvae",
"libretto": "librettos",
"loaf": "loaves",
"locus": "loci",
"minutia": "minutiae",
"moose": "moose",
"nebula": "nebulae",
"nucleus": "nuclei",
"oasis": "oases",
"offspring": "offspring",
"opus": "opera",
"parenthesis": "parentheses",
"phenomenon": "phenomena",
"phylum": "phyla",
"prognosis": "prognoses",
"radius": "radiuses",
"referendum": "referendums",
"salmon": "salmon",
"shrimp": "shrimp",
"stimulus": "stimuli",
"stratum": "strata",
"swine": "swine",
"syllabus": "syllabi",
"symposium": "symposiums",
"synopsis": "synopses",
"tableau": "tableaus",
"thesis": "theses",
"thief": "thieves",
"trout": "trout",
"tuna": "tuna",
"vertebra": "vertebrae",
"vita": "vitae",
"vortex": "vortices",
"wharf": "wharves",
"wife": "wives",
"wolf": "wolves",
"datum": "data",
"testis": "testes",
"alias": "aliases",
"house": "houses",
"shoe": "shoes",
"news": "news",
"ovum": "ova",
"foo": "foos",
}
var pluralToSingle = map[string]string{}
func init() {
for k, v := range singleToPlural {
pluralToSingle[v] = k
}
}
func init() {
AddPlural("campus", "campuses")
AddPlural("man", "men")
AddPlural("tz", "tzes")
AddPlural("alias", "aliases")
AddPlural("oasis", "oasis")
AddPlural("wife", "wives")
AddPlural("basis", "basis")
AddPlural("atum", "ata")
AddPlural("adium", "adia")
AddPlural("actus", "acti")
AddPlural("irus", "iri")
AddPlural("iterion", "iteria")
AddPlural("dium", "diums")
AddPlural("ovum", "ova")
AddPlural("ize", "izes")
AddPlural("dge", "dges")
AddPlural("focus", "foci")
AddPlural("child", "children")
AddPlural("oaf", "oaves")
AddPlural("randum", "randa")
AddPlural("base", "bases")
AddPlural("atus", "atuses")
AddPlural("ode", "odes")
AddPlural("person", "people")
AddPlural("va", "vae")
AddPlural("leus", "li")
AddPlural("oot", "eet")
AddPlural("oose", "eese")
AddPlural("box", "boxes")
AddPlural("ium", "ia")
AddPlural("sis", "ses")
AddPlural("nna", "nnas")
AddPlural("eses", "esis")
AddPlural("stis", "stes")
AddPlural("ex", "ices")
AddPlural("ula", "ulae")
AddPlural("isis", "ises")
AddPlural("ouses", "ouse")
AddPlural("olves", "olf")
AddPlural("lf", "lves")
AddPlural("rf", "rves")
AddPlural("afe", "aves")
AddPlural("bfe", "bves")
AddPlural("cfe", "cves")
AddPlural("dfe", "dves")
AddPlural("efe", "eves")
AddPlural("gfe", "gves")
AddPlural("hfe", "hves")
AddPlural("ife", "ives")
AddPlural("jfe", "jves")
AddPlural("kfe", "kves")
AddPlural("lfe", "lves")
AddPlural("mfe", "mves")
AddPlural("nfe", "nves")
AddPlural("ofe", "oves")
AddPlural("pfe", "pves")
AddPlural("qfe", "qves")
AddPlural("rfe", "rves")
AddPlural("sfe", "sves")
AddPlural("tfe", "tves")
AddPlural("ufe", "uves")
AddPlural("vfe", "vves")
AddPlural("wfe", "wves")
AddPlural("xfe", "xves")
AddPlural("yfe", "yves")
AddPlural("zfe", "zves")
AddPlural("hive", "hives")
AddPlural("quy", "quies")
AddPlural("by", "bies")
AddPlural("cy", "cies")
AddPlural("dy", "dies")
AddPlural("fy", "fies")
AddPlural("gy", "gies")
AddPlural("hy", "hies")
AddPlural("jy", "jies")
AddPlural("ky", "kies")
AddPlural("ly", "lies")
AddPlural("my", "mies")
AddPlural("ny", "nies")
AddPlural("py", "pies")
AddPlural("qy", "qies")
AddPlural("ry", "ries")
AddPlural("sy", "sies")
AddPlural("ty", "ties")
AddPlural("vy", "vies")
AddPlural("wy", "wies")
AddPlural("xy", "xies")
AddPlural("zy", "zies")
AddPlural("x", "xes")
AddPlural("ch", "ches")
AddPlural("ss", "sses")
AddPlural("sh", "shes")
AddPlural("oe", "oes")
AddPlural("io", "ios")
AddPlural("o", "oes")
}