textlint-filter-rule-comments
Version:
textlint rule that ignore texts using comments directive.
71 lines (61 loc) • 3.26 kB
JavaScript
// LICENSE : MIT
;
var _StatusManager = require("./StatusManager");
var _StatusManager2 = _interopRequireDefault(_StatusManager);
var _parseComment = require("./parse-comment");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var defaultOptions = {
// enable comment directive
// if comment has the value, then enable textlint rule
"enablingComment": "textlint-enable",
// disable comment directive
// if comment has the value, then disable textlint rule
"disablingComment": "textlint-disable"
};
module.exports = function (context) {
var _ref;
var options = arguments.length <= 1 || arguments[1] === undefined ? defaultOptions : arguments[1];
var Syntax = context.Syntax;
var shouldIgnore = context.shouldIgnore;
var getSource = context.getSource;
var enablingComment = options.enablingComment || defaultOptions.enablingComment;
var disablingComment = options.disablingComment || defaultOptions.disablingComment;
var content = getSource();
var statusManager = new _StatusManager2.default(content.length);
// Get comment value
return _ref = {}, _defineProperty(_ref, Syntax.Html, function (node) {
var nodeValue = getSource(node);
if (!(0, _parseComment.isHTMLComment)(nodeValue)) {
return;
}
var comments = (0, _parseComment.getValuesFromHTMLComment)(nodeValue);
comments.forEach(function (commentValue) {
if (commentValue.indexOf(enablingComment) !== -1) {
var configValue = commentValue.replace(enablingComment, "");
statusManager.enableReporting(node, (0, _parseComment.parseRuleIds)(configValue));
} else if (commentValue.indexOf(disablingComment) !== -1) {
var _configValue = commentValue.replace(disablingComment, "");
statusManager.disableReporting(node, (0, _parseComment.parseRuleIds)(_configValue));
}
});
}), _defineProperty(_ref, Syntax.Comment, function (node) {
var commentValue = node.value || "";
if (commentValue.indexOf(enablingComment) !== -1) {
var configValue = commentValue.replace(enablingComment, "");
statusManager.enableReporting(node, (0, _parseComment.parseRuleIds)(configValue));
} else if (commentValue.indexOf(disablingComment) !== -1) {
var _configValue2 = commentValue.replace(disablingComment, "");
statusManager.disableReporting(node, (0, _parseComment.parseRuleIds)(_configValue2));
}
}), _defineProperty(_ref, Syntax.Document + ":exit", function undefined() {
var ignoringMessages = statusManager.getIgnoringMessages();
ignoringMessages.forEach(function (message) {
var range = [message.startIndex, message.endIndex];
shouldIgnore(range, {
ruleId: message.ruleId || "*"
});
});
}), _ref;
};
//# sourceMappingURL=textlint-filter-rule-comments.js.map