Switch to edit mode.
Name(s): _verb_plural1: if (typeof(st = args[1]) != $STR)
2: return E_INVARG
3: endif
4: len = length(st)
5: if (len >= 3 && rindex(st, "n't") == len - 2)
6: return this:_verb_plural(st[1..len - 3], args[2]) + "n't"
7: elseif (i = st in {"has", "is"})
8: return this.({"have", "be"}[i])[args[2]]
9: elseif (st == "was")
10: return args[2] > 6 ? "were" | st
11: elseif (len <= 3 || st[len] != "s")
12: return st
13: elseif (st[len - 1] != "e")
14: return st[1..len - 1]
15: elseif ((r = rindex(st, "sses") || rindex(st, "zzes")) && r == len - 3)
16: return st[1..len - 3]
17: elseif (st[len - 2] == "h" && index("cs", st[len - 3]) || index("ox", st[len - 2]))
18: return st[1..len - 2]
19: "washes => wash, belches => belch, boxes => box"
20: "used to have || ((st[len - 2] == \"s\") && (!index(\"aeiouy\", st[len - 3])))"
21: "so that <consonant>ses => <consonant>s"
22: "known examples: none"
23: "counterexample: browses => browse"
24: elseif (st[len - 2] == "i")
25: return st[1..len - 3] + "y"
26: else
27: return st[1..len - 1]
28: endif
29: "Last modified by Dax (#789) on Mon Aug 7 21:32:56 2006 MDT."