@textlint/kernel
Version:
textlint kernel is core logic by pure JavaScript.
51 lines • 2.29 kB
JavaScript
// LICENSE : MIT
"use strict";
import CoreTask from "./textlint-core-task";
import { getSeverity } from "../shared/rule-severity";
import { TextlintFilterRuleContextImpl } from "../context/TextlintFilterRuleContextImpl";
import { TextlintRuleContextImpl } from "../context/TextlintRuleContextImpl";
import _debug from "debug";
const debug = _debug("textlint:TextLintCoreTask");
export default class TextLintCoreTask extends CoreTask {
constructor({ config, configBaseDir, fixableRuleDescriptor, filterRuleDescriptors, sourceCode }) {
super();
this.config = config;
this.configBaseDir = configBaseDir;
this.fixableRuleDescriptor = fixableRuleDescriptor;
this.filterRuleDescriptors = filterRuleDescriptors;
this.sourceCode = sourceCode;
this._setupRules();
}
start() {
this.startTraverser(this.sourceCode);
}
_setupRules() {
// rule
const sourceCode = this.sourceCode;
const report = this.createReporter(sourceCode);
const ignoreReport = this.createShouldIgnore();
// setup "rules" field by using a single fixerRule
debug("fixerRule", this.fixableRuleDescriptor);
const ruleContext = new TextlintRuleContextImpl({
ruleId: this.fixableRuleDescriptor.id,
severityLevel: getSeverity(this.fixableRuleDescriptor.normalizedOptions),
sourceCode,
report,
configBaseDir: this.configBaseDir
});
this.tryToAddListenRule(this.fixableRuleDescriptor.fixer, ruleContext, this.fixableRuleDescriptor.normalizedOptions);
// setup "filters" field
debug("filterRules", this.filterRuleDescriptors);
this.filterRuleDescriptors.descriptors.forEach((filterRuleDescriptor) => {
const ruleContext = new TextlintFilterRuleContextImpl({
ruleId: filterRuleDescriptor.id,
severityLevel: getSeverity(filterRuleDescriptor.normalizedOptions),
sourceCode,
ignoreReport,
configBaseDir: this.configBaseDir
});
this.tryToAddListenRule(filterRuleDescriptor.filter, ruleContext, filterRuleDescriptor.normalizedOptions);
});
}
}
//# sourceMappingURL=fixer-task.js.map