Warning: session_start(): open(/var/lib/php/sessions/sess_6fgqfqesnfdhu6fm75sf90pq2a, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
scope gazelle_addVarDiscriminators.
sclass #VarDiscriminator {
S var;
O discriminator;
bool debug;
*() {}
*(S *var, O *discriminator, bool *debug) {}
SS get(SS map, LS tokC, LS tokI, RuleEngine2_MatchedRule matched) {
if (map == null) null;
S value = map.get(var);
if (value != null && !isTrue(callAndMake_orF1(discriminator, value))) {
if (debug) print("Rejecting var: " + var + " -> " + value + " because of " + discriminator);
null;
}
ret map;
}
}
svoid gazelle_addVarDiscriminators(RuleEngine2 engine, O... _) {
bool debug = boolPar debug(_);
for (final RuleEngine2.Rule r : engine.rules) {
for (Matches m : getJMatches_all("var * should satisfy *", r.comments)) {
S var = $1, discriminator = $2;
if (debug) print("Made discriminator for: " + var);
r.addMapMassager(new VarDiscriminator(var, discriminator, debug));
}
for (Matches m : getJMatches_all("* has to be between * and *", r.comments)) {
S var = $1;
double min = parseDouble($2), max = parseDouble($3);
if (debug) print("Made discriminator for: " + var);
r.addMapMassager(new VarDiscriminator(var, func(S value) -> bool {
isBetween_double(parseDouble(or(value, var)), min, max)
}, debug));
}
}
}
end scope