@textlint/kernel
Version:
textlint kernel is core logic by pure JavaScript.
111 lines (110 loc) • 3.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getFilter = exports.assertRuleShape = exports.isRuleModule = exports.getFixer = exports.hasFixer = exports.getLinter = exports.hasLinter = void 0;
/**
* detect that ruleCreator has linter function
* @param {*} ruleCreator
* @returns {boolean}
*/
function hasLinter(ruleCreator) {
if (typeof ruleCreator.linter === "function") {
return true;
}
if (typeof ruleCreator === "function") {
return true;
}
return false;
}
exports.hasLinter = hasLinter;
/**
* get linter function from ruleCreator
* if not found, throw error
* @param {Function|Object|any} ruleCreator
* @returns {Function} linter function
* @throws
*/
function getLinter(ruleCreator) {
if (typeof ruleCreator.linter === "function") {
return ruleCreator.linter;
}
if (typeof ruleCreator === "function") {
return ruleCreator;
}
throw new Error("Not found linter function in the ruleCreator");
}
exports.getLinter = getLinter;
/**
* detect that ruleCreator has fixer function
* @param {*} ruleCreator
* @returns {boolean}
*/
function hasFixer(ruleCreator) {
return typeof ruleCreator.fixer === "function" && hasLinter(ruleCreator);
}
exports.hasFixer = hasFixer;
/**
* get fixer function from ruleCreator
* if not found, throw error
* @param {Function|Object|any} ruleCreator
* @returns {Function} fixer function
* @throws
*/
function getFixer(ruleCreator) {
if (!hasLinter(ruleCreator)) {
throw new Error("fixer module should have also linter function.");
}
if (hasFixer(ruleCreator)) {
return ruleCreator.fixer;
}
throw new Error("Not found fixer function in the ruleCreator");
}
exports.getFixer = getFixer;
/**
* RuleModule should has either linter or fixer.
* @param {*} ruleCreator
* @returns {boolean}
**/
function isRuleModule(ruleCreator) {
return hasLinter(ruleCreator) || hasFixer(ruleCreator);
}
exports.isRuleModule = isRuleModule;
/**
* Validate rule module.
* if invalid throw error
* @param {*} ruleModule
* @param {string} [key]
* @throws
*/
function assertRuleShape(ruleModule, key = "") {
if (ruleModule === undefined) {
throw new Error(`Definition of rule '${key}' was not found.`);
}
/*
Check old rule function
module.exports = function(context){
}
*/
if (!isRuleModule(ruleModule)) {
throw new Error(`Definition of rule '${key}' was not rule module.
Rule should export function:
module.exports = function(context){
// Your rule
};`);
}
}
exports.assertRuleShape = assertRuleShape;
/**
* get linter function from ruleCreator
* if not found, throw error
* @param {*} ruleCreator
* @returns {Function} linter function
* @throws
*/
function getFilter(ruleCreator) {
if (typeof ruleCreator === "function") {
return ruleCreator;
}
throw new Error("Not found filter function in the ruleCreator");
}
exports.getFilter = getFilter;
//# sourceMappingURL=rule-creator-helper.js.map