Switch to edit mode.
Name(s): _verb_singular1: 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_singular(st[1..len - 3], args[2]) + "n't"
7: elseif (i = st in {"have", "are"})
8: return this.({"have", "be"}[i])[args[2]]
9: elseif (st[len] == "y" && !index("aeiou", st[len - 1]))
10: return st[1..len - 1] + "ies"
11: elseif (index("sz", st[len]) && index("aeiou", st[len - 1]))
12: return st + st[len] + "es"
13: elseif (index("osx", st[len]) || (len > 1 && index("chsh", st[len - 1..len]) % 2))
14: return st + "es"
15: else
16: return st + "s"
17: endif
18: "Last modified by Dax (#789) on Mon Aug 7 21:32:56 2006 MDT."