41 lines
805 B
C
41 lines
805 B
C
mixed process_value(string func) {
|
|
int tmp;
|
|
string arg;
|
|
object obj;
|
|
mixed ret;
|
|
|
|
if (!func || !stringp(func))
|
|
return 0;
|
|
|
|
if ((tmp = member_array('|', func)) != -1) {
|
|
arg = func[tmp+1..];
|
|
func = func[0..tmp-1];
|
|
}
|
|
if ((tmp = member_array(':', func)) != -1) {
|
|
obj = find_object(func[tmp+1..]);
|
|
func = func[0..tmp-1];
|
|
} else {
|
|
obj = previous_object();
|
|
}
|
|
if (!obj)
|
|
return 0;
|
|
|
|
return call_other(obj, func, explode(arg, "|")...);
|
|
}
|
|
|
|
string process_string(string str) {
|
|
int pr_start;
|
|
string array parts = explode(str, "@@");
|
|
|
|
pr_start = !(str[0..1]=="@@");
|
|
|
|
for (int il = pr_start; il < sizeof(parts); il += 2) {
|
|
string tmp = process_value(parts[il]);
|
|
if (stringp(tmp))
|
|
parts[il] = tmp;
|
|
}
|
|
|
|
return implode(parts, "");
|
|
}
|
|
|