jscpd
Version:
Copy/paste detector for programming code, support JavaScript, CoffeeScript, PHP, Ruby, Python, Less, Go, Java, Yaml, C#, C++, C languages
63 lines (54 loc) • 1.78 kB
JavaScript
// Generated by CoffeeScript 1.10.0
(function() {
var _, filesPreprocessor, findFiles, glob, path, prepareOptions;
_ = require("underscore");
path = require("path");
glob = require("glob");
findFiles = function(jscpd) {
var excluded_files, files, i, j, len, len1, pattern, ref, ref1;
files = [];
excluded_files = [];
ref = jscpd.options.patterns;
for (i = 0, len = ref.length; i < len; i++) {
pattern = ref[i];
files = _.union(files, glob.sync(pattern, {
cwd: jscpd.options.path
}));
}
if (jscpd.options.exclude && jscpd.options.exclude.length > 0) {
ref1 = jscpd.options.exclude;
for (j = 0, len1 = ref1.length; j < len1; j++) {
pattern = ref1[j];
excluded_files = _.union(excluded_files, glob.sync(pattern, {
cwd: jscpd.options.path
}));
}
}
files = _.difference(files, excluded_files);
files = _.map(files, function(file) {
return path.normalize(jscpd.options.path + "/" + file);
});
return files;
};
prepareOptions = function(jscpd) {
if (jscpd.options.files === null) {
jscpd.options.patterns = ["**/*.+(" + (jscpd.options.extensions.join('|')) + ")"];
} else {
if (!Array.isArray(jscpd.options.files)) {
jscpd.options.patterns = [jscpd.options.files];
} else {
jscpd.options.patterns = jscpd.options.files;
}
}
if (jscpd.options.exclude !== null) {
if (!Array.isArray(jscpd.options.exclude)) {
return jscpd.options.exclude = [jscpd.options.exclude];
}
}
};
filesPreprocessor = function(jscpd) {
prepareOptions(jscpd);
return jscpd.options.selectedFiles = findFiles(jscpd);
};
module.exports = filesPreprocessor;
}).call(this);