UNPKG

@textlint/kernel

Version:
77 lines 2.7 kB
import { createTextlintFilterRuleDescriptors, createTextlintPluginDescriptors, createTextlintRuleDescriptors } from "./DescriptorsFactory"; export class TextlintKernelDescriptor { constructor(args) { this.args = args; this.rule = createTextlintRuleDescriptors(args.rules); this.filterRule = createTextlintFilterRuleDescriptors(args.filterRules); this.plugin = createTextlintPluginDescriptors(args.plugins); this.configBaseDir = args.configBaseDir; } /** * Return available extensions of plugins */ get availableExtensions() { return this.plugin.availableExtensions; } /** * Merge constructor args and partialArgs * It shallow merge partialArgs. * It means that overwrite own properties by partialArgs. */ shallowMerge(partialArgs) { return new TextlintKernelDescriptor({ ...this.args, ...partialArgs }); } /** * Concat descriptors * If A.concat(B), A is base, B is added * Note: withoutDuplicated pick A from [A, B] If A and B have same ruleId. * @param other */ concat(other) { var _a; return new TextlintKernelDescriptor({ configBaseDir: (_a = other.configBaseDir) !== null && _a !== void 0 ? _a : this.configBaseDir, rules: this.rule.toKernelRulesFormat().concat(other.rule.toKernelRulesFormat()), filterRules: this.filterRule .toKernelFilterRulesFormat() .concat(other.filterRule.toKernelFilterRulesFormat()), plugins: this.plugin.toKernelPluginsFormat().concat(other.plugin.toKernelPluginsFormat()) }); } /** * find PluginDescriptor with extension. * This is forward match. * * If following config of textlint, this method prefer to select MarkdownA for markdown. * * { * "plugins": [MarkdownA, MarkdownB] * } */ findPluginDescriptorWithExt(ext) { return this.plugin.findPluginDescriptorWithExt(ext); } /** * Convert descriptor to TextlintKernelOptions */ toKernelOptions() { return { configBaseDir: this.configBaseDir, rules: this.rule.toKernelRulesFormat(), filterRules: this.filterRule.toKernelFilterRulesFormat(), plugins: this.plugin.toKernelPluginsFormat() }; } toJSON() { return { rule: this.rule.toJSON(), filterRule: this.filterRule.toJSON(), plugin: this.plugin.toJSON(), configBaseDir: this.configBaseDir }; } } //# sourceMappingURL=TextlintKernelDescriptor.js.map