View/Edit #40:_verb_plural

Switch to edit mode.

Name(s): _verb_plural
1:  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."

Verb arguments: this none this
Verb perms: Readable eXecutable NOT-Debug
Verb owned by: Hacker (#60)

You are not logged in.

[home | help | who | search | setup | code]