UNPKG

jscpd

Version:

Copy/paste detector for programming code, support JavaScript, CoffeeScript, PHP, Ruby, Python, Less, Go, Java, Yaml, C#, C++, C languages

64 lines (54 loc) 1.72 kB
// Generated by CoffeeScript 1.10.0 (function() { var Report, fs, logger, path; fs = require('fs'); logger = require('winston'); path = require('path'); Report = (function() { function Report(options) { var cwd, ext, isAbsolute, reporter; this.options = options; reporter = this.options.reporter; if (this.options.output) { ext = this.options.output.split('.').pop(); } if (ext === 'xml' && reporter === 'json' || ext === 'json' && reporter === 'xml') { logger.warn("output file extention '" + this.options.output + "' does not match reporter '" + reporter + "'"); } switch (reporter) { case 'xml': reporter = './reporters/xml-pmd'; break; case 'json': reporter = './reporters/json'; break; default: cwd = process.cwd(); reporter = path.normalize(reporter); isAbsolute = reporter.indexOf(cwd) === 0; if (!isAbsolute) { reporter = path.join(cwd, reporter); } } this.reporter = require(reporter); this.stdReporter = require('./reporters/_std-log'); } Report.prototype.generate = function(map) { var dump, log, raw, ref; this.map = map; ref = this.reporter(this.options), raw = ref[0], dump = ref[1], log = ref[2]; if (!log) { log = this.stdReporter(); } logger.info(log); if (this.options.output) { fs.writeFileSync(this.options.output, dump || raw); } else { logger.warn('output file is not provided'); } return raw || dump; }; return Report; })(); exports.Report = Report; }).call(this);