fluffos/compat/simuls/process_string.c

40 lines
796 B
C
Raw Permalink Normal View History

2001-12-21 15:30:43 -05:00
mixed process_value(string func) {
int tmp;
2001-03-31 17:02:21 -05:00
string arg;
2001-12-21 15:30:43 -05:00
object obj;
mixed ret;
2000-08-13 22:49:30 -04:00
if (!func || !stringp(func))
2001-12-21 15:30:43 -05:00
return 0;
2000-08-13 22:49:30 -04:00
if ((tmp = member_array('|', func)) != -1) {
2001-12-21 15:30:43 -05:00
arg = func[tmp+1..];
func = func[0..tmp-1];
2000-08-13 22:49:30 -04:00
}
if ((tmp = member_array(':', func)) != -1) {
2001-12-21 15:30:43 -05:00
obj = find_object(func[tmp+1..]);
func = func[0..tmp-1];
2000-08-13 22:49:30 -04:00
} else {
2001-12-21 15:30:43 -05:00
obj = previous_object();
2000-08-13 22:49:30 -04:00
}
2001-12-21 15:30:43 -05:00
if (!obj)
return 0;
2000-08-13 22:49:30 -04:00
2001-12-21 15:30:43 -05:00
return call_other(obj, func, explode(arg, "|")...);
2000-08-13 22:49:30 -04:00
}
2001-12-21 15:30:43 -05:00
string process_string(string str) {
int pr_start;
string array parts = explode(str, "@@");
2014-11-16 21:31:57 -08:00
2000-08-13 22:49:30 -04:00
pr_start = !(str[0..1]=="@@");
2014-11-16 21:31:57 -08:00
2000-08-13 22:49:30 -04:00
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, "");
}