// Author: Boy Baukema // http://github.com/relaxnow module.exports = { reporter: function(results, data, opts) { "use strict"; var files = {}, out = [], pairs = { "&": "&", '"': """, "'": "'", "<": "<", ">": ">" }, fileName, i, issue, errorMessage; opts = opts || {}; function encode(s) { for (var r in pairs) { if (typeof(s) !== "undefined") { s = s.replace(new RegExp(r, "g"), pairs[r]); } } return s || ""; } results.forEach(function(result) { // Register the file result.file = result.file.replace(/^\.\//, ''); if (!files[result.file]) { files[result.file] = []; } // Create the error message errorMessage = result.error.reason; if (opts.verbose) { errorMessage += ' (' + result.error.code + ')'; } var typeNo = result.error.code; var severity = ''; switch (typeNo[0]) { case 'I': severity = 'info'; break; case 'W': severity = 'warning'; break; case 'E': severity = 'error'; break; } // Add the error files[result.file].push({ severity: severity, line: result.error.line, column: result.error.character, message: errorMessage, source: 'jshint.' + result.error.code }); }); out.push(""); out.push(""); for (fileName in files) { if (files.hasOwnProperty(fileName)) { out.push("\t"); for (i = 0; i < files[fileName].length; i++) { issue = files[fileName][i]; out.push( "\t\t" ); } out.push("\t"); } } out.push(""); console.log(out.join("\n")); } };