@textlint/kernel
Version:
textlint kernel is core logic by pure JavaScript.
64 lines • 1.97 kB
JavaScript
// LICENSE : MIT
;
import { TextlintLintableRuleDescriptor } from "./TextlintLintableRuleDescriptor";
import { filterDuplicateDescriptor } from "./DescriptorUtil";
import { TextlintFixableRuleDescriptor } from "./TextlintFixableRuleDescriptor";
/**
* The collection class of TextlintRuleDescriptor
*/
export class TextlintRuleDescriptors {
constructor(ruleDescriptorList = []) {
this.ruleDescriptorList = ruleDescriptorList;
}
/**
* Convert this to TextlintKernel rules format
* @returns {Array}
*/
toKernelRulesFormat() {
return this.withoutDuplicated().lintableDescriptors.map((descriptor) => {
return descriptor.toKernel();
});
}
/**
* Return enabled lintable descriptors
*/
get lintableDescriptors() {
return this.descriptors.filter((descriptor) => {
// fixable is also lintable
return descriptor instanceof TextlintLintableRuleDescriptor;
});
}
/**
* Return enabled fixable descriptors
*/
get fixableDescriptors() {
return this.descriptors.filter((descriptor) => {
return descriptor instanceof TextlintFixableRuleDescriptor;
});
}
/**
* Return enabled descriptors
*/
get descriptors() {
return this.ruleDescriptorList.filter((descriptor) => descriptor.enabled);
}
/**
* Return all descriptors that include disabled descriptors
*/
get allDescriptors() {
return this.ruleDescriptorList;
}
/**
* filter duplicated descriptors
*/
withoutDuplicated() {
const newDescriptorList = filterDuplicateDescriptor(this.ruleDescriptorList);
return new TextlintRuleDescriptors(newDescriptorList);
}
toJSON() {
return this.ruleDescriptorList.map((descriptor) => {
return descriptor.toJSON();
});
}
}
//# sourceMappingURL=TextlintRuleDescriptors.js.map