UNPKG

textlint-rule-helper

Version:
50 lines 1.9 kB
// MIT © 2018 azu "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.wrapReportHandler = wrapReportHandler; var textlint_rule_helper_1 = __importDefault(require("./textlint-rule-helper")); var IgnoreNodeManager_1 = __importDefault(require("./IgnoreNodeManager")); var SourceLocation_1 = require("./SourceLocation"); /** * * @param context * @param options * @param handler */ function wrapReportHandler(context, options, handler) { var ignoreNodeTypes = options.ignoreNodeTypes || []; var ignoreNodeManager = new IgnoreNodeManager_1.default(); var ruleHelper = new textlint_rule_helper_1.default(context); var text = context.getSource(); var sourceLocation = new SourceLocation_1.SourceLocation(text); var reportIfUnignored = function reportIfUnignored(node, ruleError) { var index = sourceLocation.toAbsoluteLocation(node, ruleError); if (ignoreNodeManager.isIgnoredIndex(index)) { return; } return context.report(node, ruleError); }; var handlers = handler(reportIfUnignored); Object.keys(handlers).forEach(function (nodeType) { var nodeHandler = handlers[nodeType]; var wrappedNodeHandler = function (node) { // child nodes ignoreNodeManager.ignoreChildrenByTypes(node, ignoreNodeTypes); // parent node if (ruleHelper.isChildNode(node, ignoreNodeTypes)) { return; } if (!nodeHandler) { return; } return nodeHandler(node); }; // @ts-expect-error: ignore handlers[nodeType] = wrappedNodeHandler; }); return handlers; } //# sourceMappingURL=wrap-report-handler.js.map