mud/fluffos-2.23-ds03/compat/simuls/process_string.c
2020-09-06 05:43:07 -07:00

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, "");
}