@textlint/kernel
Version:
textlint kernel is core logic by pure JavaScript.
72 lines • 2.16 kB
JavaScript
// LICENSE : MIT
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TextlintLintableRuleDescriptor = void 0;
const rule_creator_helper_1 = require("./rule-creator-helper");
const fast_equals_1 = require("fast-equals");
/**
* Textlint Rule Descriptor.
* It handle RuleCreator and RuleOption.
*/
class TextlintLintableRuleDescriptor {
constructor(textlintKernelRule) {
this.textlintKernelRule = textlintKernelRule;
(0, rule_creator_helper_1.assertRuleShape)(textlintKernelRule.rule, textlintKernelRule.ruleId);
}
get id() {
return this.textlintKernelRule.ruleId;
}
/**
* Rule module-self
*/
get rule() {
return this.textlintKernelRule.rule;
}
/**
* Return true if this rule is enabled.
*/
get enabled() {
return this.rawOptions !== false;
}
/**
* Return linter function
* You should check hasLiner before call this.
*/
get linter() {
return (0, rule_creator_helper_1.getLinter)(this.rule);
}
/**
* Return normalized rule option object.
* If the rule have not options, return `true` by default.
*/
get normalizedOptions() {
// default: { ruleName: true }
const DefaultRuleConfigValue = {};
if (typeof this.textlintKernelRule.options === "boolean" || this.textlintKernelRule.options === undefined) {
return DefaultRuleConfigValue;
}
else {
return this.textlintKernelRule.options;
}
}
get rawOptions() {
return this.textlintKernelRule.options;
}
/**
* Return true if descriptor is same
*/
equals(descriptor) {
return this.rule === descriptor.rule && (0, fast_equals_1.deepEqual)(this.normalizedOptions, descriptor.normalizedOptions);
}
toKernel() {
return this.textlintKernelRule;
}
toJSON() {
return {
id: this.id,
options: this.normalizedOptions
};
}
}
exports.TextlintLintableRuleDescriptor = TextlintLintableRuleDescriptor;
//# sourceMappingURL=TextlintLintableRuleDescriptor.js.map