mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-21 15:42:35 +00:00
34 lines
870 B
Plaintext
34 lines
870 B
Plaintext
#define PREPARE_INPUT \
|
|
predicates = istype(predicates) ? predicates : list(predicates);\
|
|
input = istype(input) ? input : list(input);
|
|
|
|
#define PREPARE_ARGUMENTS \
|
|
var/extra_arguments = predicates[predicate];\
|
|
var/list/predicate_input = input;\
|
|
if(LAZYLEN(extra_arguments)) {\
|
|
predicate_input = predicate_input.Copy();\
|
|
predicate_input += list(extra_arguments);\
|
|
}
|
|
|
|
/proc/all_predicates_true(var/list/input, var/list/predicates)
|
|
PREPARE_INPUT
|
|
for(var/predicate in predicates)
|
|
PREPARE_ARGUMENTS
|
|
if(!call(predicate)(arglist(predicate_input)))
|
|
return FALSE
|
|
return TRUE
|
|
|
|
/proc/any_predicate_true(var/list/input, var/list/predicates)
|
|
PREPARE_INPUT
|
|
if(!predicates.len)
|
|
return TRUE
|
|
|
|
for(var/predicate in predicates)
|
|
PREPARE_ARGUMENTS
|
|
if(call(predicate)(arglist(predicate_input)))
|
|
return TRUE
|
|
return FALSE
|
|
|
|
#undef PREPARE_ARGUMENTS
|
|
#undef PREPARE_INPUT
|