View/Edit #40:_do

Switch to edit mode.

Name(s): _do
1:  "_do(cap,object,modifiers...)"
2:  cap = args[1]
3:  object = args[2]
4:  if (!(modifiers = args[3]))
5:    if (typeof(object) != $OBJ)
6:      return tostr(object)
7:    elseif (!valid(object))
8:      return (cap ? "N" | "n") + "othing"
9:    else
10:     return cap ? object:titlec() | object:title()
11:   endif
12: elseif (modifiers[1] == ".")
13:   len = length(modifiers)
14:   if (i = index(modifiers[2..len], "."))
15:     i = i + 1
16:   elseif (!(i = index(modifiers, ":") || index(modifiers, "#") || index(modifiers, "!")))
17:     i = len + 1
18:   endif
19:   if (typeof(o = object.(modifiers[2..i - 1])) == $ERR)
20:     return tostr("%(", o, ")")
21:   else
22:     return this:_do(cap || strcmp("a", modifiers[2]) > 0, o, modifiers[i..len])
23:   endif
24: elseif (modifiers[1] == ":")
25:   if (typeof(object) != $OBJ)
26:     return tostr("%(", E_TYPE, ")")
27:   elseif (p = this:get_pronoun(modifiers, object))
28:     return p
29:   else
30:     return tostr("%(", modifiers, "??)")
31:   endif
32: elseif (modifiers[1] == "#")
33:   return tostr(object)
34: elseif (modifiers[1] == "!")
35:   return this:get_conj(modifiers[2..length(modifiers)], object)
36: else
37:   i = index(modifiers, ".") || index(modifiers, ":") || index(modifiers, "#") || index(modifiers, "!") || length(modifiers) + 1
38:   s = modifiers[1..i - 1]
39:   if (j = s in {"dobj", "iobj", "this"})
40:     return this:_do(cap, {dobj, iobj, callers()[2][1]}[j], modifiers[i..length(modifiers)])
41:   else
42:     return tostr("%(", s, "??)")
43:   endif
44: endif
45: "Last modified by Dax (#789) on Wed May  4 06:44:31 2005 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]