@textlint/kernel
Version:
textlint kernel is core logic by pure JavaScript.
54 lines (47 loc) • 1.52 kB
text/typescript
// LICENSE : MIT
;
import { TextlintKernelFilterRule } from "../textlint-kernel-interface";
import { TextlintFilterRuleDescriptor } from "./TextlintFilterRuleDescriptor";
import { filterDuplicateDescriptor } from "./DescriptorUtil";
/**
* The collection class of TextlintFilterRuleDescriptor
*/
export class TextlintFilterRuleDescriptors {
constructor(private ruleDescriptorList: TextlintFilterRuleDescriptor[] = []) {}
/**
* Convert this to TextlintKernel rules format
* @returns {Array}
*/
toKernelFilterRulesFormat(): Array<TextlintKernelFilterRule> {
return this.withoutDuplicated().descriptors.map((descriptor) => {
return descriptor.toKernel();
});
}
/**
* Return enabled descriptors
*/
get descriptors() {
return this.ruleDescriptorList.filter((descriptor) => {
return descriptor.enabled;
});
}
/**
* Return all descriptors that include disabled descriptors
*/
get allDescriptors() {
return this.ruleDescriptorList;
}
/**
* filter duplicated descriptors
*/
withoutDuplicated(): TextlintFilterRuleDescriptors {
// remove last duplicated item
const newDescriptorList = filterDuplicateDescriptor(this.ruleDescriptorList);
return new TextlintFilterRuleDescriptors(newDescriptorList);
}
toJSON() {
return this.descriptors.map((descriptor) => {
return descriptor.toJSON();
});
}
}