@textlint/kernel
Version:
textlint kernel is core logic by pure JavaScript.
42 lines • 1.51 kB
JavaScript
// LICENSE : MIT
;
import MessageType from "../shared/type/MessageType";
/**
* the `index` is in the `range` and return true.
* @param {Number} index
* @param {Number[]} range
* @returns {boolean}
*/
const isContainedRange = ({ range, ignoredRange }) => {
const [start, end] = ignoredRange;
return start <= range[0] && range[1] <= end;
};
/**
* filter messages by ignore messages
* @param {Object[]} messages
* @returns {Object[]} filtered messages
*/
export default function filterMessages(messages = []) {
const lintingMessages = messages.filter((message) => {
return message.type === MessageType.lint;
});
const ignoreMessages = messages.filter((message) => {
return message.type === MessageType.ignore;
});
// if match, reject the message
return lintingMessages.filter((message) => {
return !ignoreMessages.some((ignoreMessage) => {
const isInIgnoringRange = isContainedRange({ range: message.range, ignoredRange: ignoreMessage.range });
if (isInIgnoringRange && ignoreMessage.ignoringRuleId) {
// "*" is wildcard that match any rule
if (ignoreMessage.ignoringRuleId === "*") {
return true;
}
// compare normalized key path
return message.ruleId === ignoreMessage.ignoringRuleId;
}
return isInIgnoringRange;
});
});
}
//# sourceMappingURL=filter-ignored-process.js.map