View/Edit #7234:load_verb

Switch to edit mode.

Name(s): load_verb
1:  set_task_perms(caller_perms())
2:  {o, v, xml} = args
3:  xml = $xml:parse(xml)
4:  xml[1] != "moo_verb" && raise(E_INVARG, "start tag is not <moo_verb>")
5:  flags = ""
6:  perms = caller_perms().wizard ? this.mortal_perms | caller_perms()
7:  for x in (xml[3])
8:    if (x[1] == "wizardly" && caller_perms().wizard)
9:      perms = this.wizard_perms
10:   elseif (x[1] == "readable")
11:     flags = tostr(flags, "r")
12:   elseif (x[1] == "executable")
13:     flags = tostr(flags, "x")
14:   elseif (x[1] == "debug")
15:     flags = tostr(flags, "d")
16:   elseif (x[1] == "overridable")
17:     flags = tostr(flags, "o")
18:   elseif (x[1] == "writable")
19:     flags = tostr(flags, "w")
20:   elseif (x[1] == "dobj")
21:     d = $xml:strip_whitespace(x[3][1])
22:   elseif (x[1] == "prep")
23:     p = $xml:strip_whitespace(x[3][1])
24:   elseif (x[1] == "iobj")
25:     i = $xml:strip_whitespace(x[3][1])
26:   elseif (x[1] == "code")
27:     code = $string_utils:explode(x[3][1], "/*-")
28:   endif
29: endfor
30: vname = v
31: if ((v = vname in verbs(o)) || `verb_info(o, vname) ! E_VERBNF')
32:   set_verb_info(o, v || vname, {caller_perms(), flags, vname})
33:   set_verb_args(o, v || vname, {d, p, i})
34: else
35:   add_verb(o, {caller_perms(), flags, vname}, {d, p, i})
36:   v = length(verbs(o))
37: endif
38: ERR = set_verb_code(o, v || vname, code)
39: return ERR || v in verbs(o)
40: "Last modified by manta (#7165) on Fri Oct 12 13:42:18 2001 MDT."

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

You are not logged in.

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