module.exports =
{
	reporter: function (results)
	{
		"use strict";

		var files = {},
		out = [],
		pairs = {
			"&": "&amp;",
			'"': "&quot;",
			"'": "&apos;",
			"<": "&lt;",
			">": "&gt;"
		},
		file, i, issue;

		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) {
			result.file = result.file.replace(/^\.\//, '');
			if (!files[result.file]) {
				files[result.file] = [];
			}
			files[result.file].push(result.error);
		});

		out.push("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
		out.push("<jslint>");

		for (file in files) {
			out.push("\t<file name=\"" + file + "\">");
			for (i = 0; i < files[file].length; i++) {
				issue = files[file][i];
				out.push("\t\t<issue line=\"" + issue.line +
					"\" char=\"" + issue.character +
					"\" reason=\"" + encode(issue.reason) +
					"\" evidence=\"" + encode(issue.evidence) +
					(issue.code ? "\" severity=\"" + encode(issue.code.charAt(0)) : "") +
					"\" />");
			}
			out.push("\t</file>");
		}

		out.push("</jslint>");

		process.stdout.write(out.join("\n") + "\n");
	}
};
