@qualweb/act-rules
Version:
ACT rules module for qualweb web accessibility evaluator
77 lines (76 loc) • 2.74 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Rule = void 0;
const evaluation_1 = require("@qualweb/core/evaluation");
const rules_json_1 = __importDefault(require("./rules.json"));
class Rule extends evaluation_1.Guideline {
constructor(translator) {
super();
this.translator = translator;
const rule = rules_json_1.default[new.target.name];
rule.metadata.passed = 0;
rule.metadata.warning = 0;
rule.metadata.failed = 0;
rule.metadata.inapplicable = 0;
rule.metadata.outcome = evaluation_1.Verdict.INAPPLICABLE.valueOf();
rule.results = new Array();
this.rule = rule;
this.translator.translateAssertion(this.rule);
}
translate(resultCode, values) {
return this.translator.translateTest(this.rule.code, resultCode, values);
}
getCode() {
return this.rule.code;
}
getMapping() {
return this.rule.mapping;
}
hasPrincipleAndLevels(principles, levels) {
return this.rule.metadata['success-criteria'].some((sc) => principles.includes(sc.principle) && levels.includes(sc.level));
}
getFinalResults() {
this.generateOutcome();
return this.rule;
}
addTestResult(test) {
if (!test.description || test.description.trim() === '') {
test.description = this.translate(test.resultCode);
}
this.rule.results.push(test);
if (test.verdict && test.verdict !== evaluation_1.Verdict.INAPPLICABLE) {
this.rule.metadata[test.verdict]++;
}
}
generateOutcome() {
if (this.rule.metadata.failed) {
this.rule.metadata.outcome = evaluation_1.Verdict.FAILED;
}
else if (this.rule.metadata.warning) {
this.rule.metadata.outcome = evaluation_1.Verdict.WARNING;
}
else if (this.rule.metadata.passed) {
this.rule.metadata.outcome = evaluation_1.Verdict.PASSED;
}
else {
this.rule.metadata.outcome = evaluation_1.Verdict.INAPPLICABLE;
this.rule.metadata.inapplicable = 1;
}
if (this.rule.results.length > 0) {
this.addDescription();
}
}
addDescription() {
var _a;
for (const result of (_a = this.rule.results) !== null && _a !== void 0 ? _a : []) {
if (result.verdict === this.rule.metadata.outcome) {
this.rule.metadata.description = result.description;
break;
}
}
}
}
exports.Rule = Rule;