UNPKG

@qualweb/act-rules

Version:

ACT rules module for qualweb web accessibility evaluator

77 lines (76 loc) 2.74 kB
"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;