function merge(source, add) {
'use strict';
var result = source || {};
if (!add) {
return result;
}
Object.keys(add).forEach(function (prop) {
if (!result.hasOwnProperty(prop)) {
result[prop] = add[prop];
}
});
return result;
}
exports.merge = merge;
function preprocessScript(script) {
'use strict';
// Fix UTF8 with BOM
if (script.charCodeAt(0) === 0xFEFF) {
script = script.slice(1);
}
// remove shebang: replace it with empty line
/*jslint regexp: true*/
script = script.replace(/^\#\!.*/, "");
/*jslint regexp: false*/
return script;
}
exports.preprocessScript = preprocessScript;
exports.doLint = function (JSLINT, script, options) {
'use strict';
var ok,
result;
script = preprocessScript(script);
ok = JSLINT(script, options);
result = JSLINT.data();
result.ok = ok;
result.options = options;
return result;
};