@textlint/kernel
Version:
textlint kernel is core logic by pure JavaScript.
57 lines • 2.67 kB
JavaScript
// LICENSE : MIT
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const textlint_core_task_1 = __importDefault(require("./textlint-core-task"));
const rule_severity_1 = require("../shared/rule-severity");
const TextlintRuleContextImpl_1 = require("../context/TextlintRuleContextImpl");
const TextlintFilterRuleContextImpl_1 = require("../context/TextlintFilterRuleContextImpl");
class TextLintCoreTask extends textlint_core_task_1.default {
constructor({ config, configBaseDir, ruleDescriptors, filterRuleDescriptors: filterRuleDescriptors, sourceCode }) {
super();
this.config = config;
this.configBaseDir = configBaseDir;
this.ruleDescriptors = ruleDescriptors;
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
// filter duplicated rules for improving experience
// see https://github.com/textlint/textlint/issues/219
this.ruleDescriptors.lintableDescriptors.forEach((ruleDescriptor) => {
const ruleOptions = ruleDescriptor.normalizedOptions;
const ruleContext = new TextlintRuleContextImpl_1.TextlintRuleContextImpl({
ruleId: ruleDescriptor.id,
severityLevel: (0, rule_severity_1.getSeverity)(ruleOptions),
sourceCode,
report,
configBaseDir: this.configBaseDir
});
this.tryToAddListenRule(ruleDescriptor.linter, ruleContext, ruleOptions);
});
// setup "filters" field
this.filterRuleDescriptors.descriptors.forEach((filterDescriptor) => {
const ruleContext = new TextlintFilterRuleContextImpl_1.TextlintFilterRuleContextImpl({
ruleId: filterDescriptor.id,
sourceCode,
ignoreReport,
configBaseDir: this.configBaseDir,
severityLevel: (0, rule_severity_1.getSeverity)(filterDescriptor.normalizedOptions)
});
this.tryToAddListenRule(filterDescriptor.filter, ruleContext, filterDescriptor.normalizedOptions);
});
}
}
exports.default = TextLintCoreTask;
//# sourceMappingURL=linter-task.js.map