mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 04:44:37 +03:00
241 lines
5.9 KiB
Go
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")
|
|
}
|