textlint-rule-helper
Version:
A helper library for textlint rule.
94 lines • 2.88 kB
JavaScript
// LICENSE : MIT
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var unist_util_visit_1 = __importDefault(require("unist-util-visit"));
/**
* Ignore node manager that manager ignored ranges.
*
*/
var IgnoreNodeManager = /** @class */ (function () {
function IgnoreNodeManager() {
/**
* @type {[number,number][]}
* @private
*/
this._ignoredRangeList = [];
}
Object.defineProperty(IgnoreNodeManager.prototype, "ignoredRanges", {
/**
* @returns {(number)[][]}
*/
get: function () {
return this._ignoredRangeList;
},
enumerable: false,
configurable: true
});
/**
* |.......|
* ^ ^
* Ignored Range
*
* |........|
* ^
* index
* @param {number} index
* @returns {boolean}
*/
IgnoreNodeManager.prototype.isIgnoredIndex = function (index) {
return this._ignoredRangeList.some(function (range) {
var start = range[0], end = range[1];
return start <= index && index < end;
});
};
/**
* @param {[number, number]} aRange
* @returns {boolean}
* @deprecated This method will be removed
*/
IgnoreNodeManager.prototype.isIgnoredRange = function (aRange) {
return this.isIgnoredIndex(aRange[0]) || this.isIgnoredIndex(aRange[1]);
};
/**
* @param {Object} node
* @returns {boolean}
*/
IgnoreNodeManager.prototype.isIgnored = function (node) {
return this.isIgnoredRange(node.range);
};
/**
* add node to ignore range list
* @param {TxtNode} node
*/
IgnoreNodeManager.prototype.ignore = function (node) {
this.ignoreRange(node.range);
};
/**
* add range to ignore range list
* @param {[number, number]} range
*/
IgnoreNodeManager.prototype.ignoreRange = function (range) {
this._ignoredRangeList.push(range);
};
/**
* ignore children node of `node`,
* if the children node has the type that is included in `ignoredNodeTypes`.
* @param {TxtNode} targetNode
* @param {string[]} ignoredNodeTypes
*/
IgnoreNodeManager.prototype.ignoreChildrenByTypes = function (targetNode, ignoredNodeTypes) {
var _this = this;
(0, unist_util_visit_1.default)(targetNode, function (visitedNode) {
// @ts-expect-error: type is TxtNodeType
if (ignoredNodeTypes.includes(visitedNode.type)) {
_this.ignore(visitedNode);
}
});
};
return IgnoreNodeManager;
}());
exports.default = IgnoreNodeManager;
//# sourceMappingURL=IgnoreNodeManager.js.map