bible-checker
Version:
A bible tool to run several checks with a target translation and a source tranlation
59 lines (58 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.runChecks = runChecks;
var _utils = require("./utils.js");
/**
* Run all checks based on the provided recipe.
* @param {object} source - Parsed JSON object of the source text.
* @param {object} target - Parsed JSON object of the target text.
* @param {array} recipe - Array of check definitions.
* @returns {object} JSON report of checks.
*/
function runChecks(source, target, recipe) {
const report = [];
for (const check of recipe) {
if (!check.enabled) continue;
let result;
switch (check.name) {
case 'versestats::verse_stats':
result = (0, _utils.detectShortLongVerses)(source, target, check.parameters?.short_threshold || 20);
break;
case 'chapterverse::integrity_check':
result = (0, _utils.checkChapterVerseIntegrity)(source, target);
break;
case 'chapterverse::missing_verses':
result = (0, _utils.detectMissingVerses)(source, target);
break;
case 'textquality::repeated_words_whitespace':
result = (0, _utils.detectRepeatedWordsAndWhitespace)(target);
break;
case 'textquality::unmatched_punctuation':
result = (0, _utils.detectUnmatchedPunctuation)(target);
break;
case "numbers_check::mismatches":
result = (0, _utils.detectNumberMismatches)(source, target);
break;
case "footnote::quotation_mismatch":
result = (0, _utils.detectFootnoteQuotes)(target);
break;
default:
console.warn(`Unknown check: ${check.name}`);
continue;
}
if (result?.issues?.length > 0) {
report.push({
name: check.name,
readName: check.readName,
description: check.description,
level: check.level,
issues: result.issues
});
}
}
return {
checks: report
};
}