UNPKG

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
// 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);