Switch to edit mode.
Name(s): _do1: "_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."