var con = console,
vm = require("vm"),
fs = require("fs"),
path = require('path'),
linter = require('./linter.js'),
LintStream = require('./lintstream.js');
exports.LintStream = LintStream;
exports.linter = linter;
exports.setConsole = function (c) {
'use strict';
con = c;
};
function looksLikeFileName(edition) {
'use strict';
// contains .js or a path separator character '/' or '\'
return (/\.js|\/|\\/).test(edition);
}
exports.looksLikeFileName = looksLikeFileName;
exports.load = function (edition) {
'use strict';
var ctx = vm.createContext(),
fileName,
jslintSource;
function makePathFromName(name) {
/*jslint nomen: true */
return path.join(__dirname, name) + ".js";
}
function makePathFromEdition(edition) {
return makePathFromName("jslint-" + edition);
}
function read(name) {
/*jslint stupid: true */
return fs.readFileSync(name);
}
if (edition) {
if (looksLikeFileName(edition)) {
fileName = edition;
} else {
fileName = makePathFromEdition(edition);
}
try {
jslintSource = read(fileName);
} catch (err) {
con.warn("Unable to load edition " + edition + ", reverting to default. " + err);
}
}
if (!jslintSource) {
jslintSource = read(makePathFromName("jslint"));
}
vm.runInContext(jslintSource, ctx);
return ctx.JSLINT;
};