@yusufkandemir/eslint-plugin-lodash-template
Version:
ESLint plugin for John Resig-style micro template, Lodash's template, Underscore's template and EJS.
58 lines (55 loc) • 1.64 kB
JavaScript
;
/**
* Message to string
* @param {*} message message
*/
function messageToString(message) {
return `${message.ruleId}:${message.line}:${message.column}:${message.endLine}:${message.endColumn}`;
}
module.exports = {
/**
* Filter duplicate messages.
* @param {Array<Array>} messages The base messages.
* @returns {Array} messages The filtered messages.
*/
filterDuplicateMessages(messages) {
const dup = new Set();
for (const message of messages[0]) {
const key = messageToString(message);
dup.add(key);
}
const results = [messages[0]];
for (const msgs of messages.slice(1)) {
const result = [];
for (const message of msgs) {
const key = messageToString(message);
if (!dup.has(key)) {
result.push(message);
dup.add(key);
}
}
results.push(result);
}
return results;
},
/**
* Filter duplicate messages.
* @param {Array<Array>} messages The base messages.
* @returns {Array} messages The filtered messages.
*/
groupingMessages(messages) {
const map = new Map();
for (const msgs of messages) {
for (const message of msgs) {
const key = messageToString(message);
let arr = map.get(key);
if (!arr) {
arr = [];
map.set(key, arr);
}
arr.push(message);
}
}
return map;
},
};