View/Edit #35:eval_key

Switch to edit mode.

Name(s): eval_key
1:  {key, who} = args
2:  type = typeof(key)
3:  if (!(type in {$LIST, $OBJ}))
4:    return 1
5:  elseif (typeof(key) == $OBJ)
6:    return who == key || $object_utils:contains(who, key)
7:  endif
8:  op = key[1]
9:  if (op == "!")
10:   return !this:eval_key(key[2], who)
11: elseif (op == "?")
12:   return key[2]:is_unlocked_for(who)
13: elseif (op == "^")
14:   return $object_utils:isa(who, key[2]) || $object_utils:hasa(who, key[2])
15: elseif (op == "&&")
16:   return this:eval_key(key[2], who) && this:eval_key(key[3], who)
17: elseif (op == "||")
18:   return this:eval_key(key[2], who) || this:eval_key(key[3], who)
19: else
20:   raise(E_INVARG, op)
21: endif
22: "Last modified by Dax (#789) on Mon Aug  7 21:53:28 2006 MDT."

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

You are not logged in.

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