Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 6x 6x 6x 6x 6x 6x 6x 6x 44x 44x 5x 39x 1x 6x 1x 1x 11x 9x 9x 1x 6x | const getInputFromRule = require('./get-input-from-rule');
const executeRuleList = require('./execute-rule-list');
const executeRuleEqual = require('./execute-rule-equal');
const executeRulePathEqual = require('./execute-rule-path-equal');
const executeRulePercent = require('./execute-rule-percent');
const executeRuleIncludes = require('./execute-rule-includes');
const executeRuleIncludesListAny = require('./execute-rule-includes-list-any');
const executeRuleIncludesListAll = require('./execute-rule-includes-list-all');
function executeRule(input, rule, values) {
const extractedInput = getInputFromRule(input, rule);
if (extractedInput === undefined) {
// Can't execute rule if input was not found.
// A missing input will skip rule execution
// and either return the default value for that key,
// or undefined if no default value is set.
return;
}
switch (rule.type) {
case 'list':
return executeRuleList(extractedInput, rule, values);
case 'equal':
return executeRuleEqual(extractedInput, rule, values);
case 'pathEqual':
return executeRulePathEqual(extractedInput, rule, values);
case 'percent':
return executeRulePercent(extractedInput, rule, values);
case 'includes':
return executeRuleIncludes(extractedInput, rule, values);
case 'includesListAny':
return executeRuleIncludesListAny(extractedInput, rule, values);
case 'includesListAll':
return executeRuleIncludesListAll(extractedInput, rule, values);
default:
throw new Error(`executeRule: rule.type not recognized: ${rule.type}`);
}
}
module.exports = executeRule;
|