UNPKG

@textlint/kernel

Version:
69 lines 1.91 kB
// LICENSE : MIT "use strict"; import { assertRuleShape, getLinter } from "./rule-creator-helper"; import { deepEqual } from "fast-equals"; /** * Textlint Rule Descriptor. * It handle RuleCreator and RuleOption. */ export class TextlintLintableRuleDescriptor { constructor(textlintKernelRule) { this.textlintKernelRule = textlintKernelRule; 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 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 && deepEqual(this.normalizedOptions, descriptor.normalizedOptions); } toKernel() { return this.textlintKernelRule; } toJSON() { return { id: this.id, options: this.normalizedOptions }; } } //# sourceMappingURL=TextlintLintableRuleDescriptor.js.map