UNPKG

jscpd

Version:

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

47 lines 4.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var models_1 = require("../stores/models"); var stores_manager_1 = require("../stores/stores-manager"); var source_1 = require("../utils/source"); function createClone(startMap, endMap) { var format = startMap.format; var hashesStore = stores_manager_1.StoresManager.getStore(models_1.getHashDbName(format)); var sourceStart = hashesStore.get(startMap.id); var sourceEnd = hashesStore.get(endMap.id); return { format: format, foundDate: new Date().getTime(), duplicationA: { sourceId: startMap.sourceId, start: startMap.start.loc.start, end: endMap.end.loc.end, range: [startMap.start.range[0], endMap.end.range[1]], fragment: getFragment(startMap.sourceId, startMap.start.range[0], endMap.end.range[1]) }, duplicationB: { sourceId: sourceStart.sourceId, start: sourceStart.start.loc.start, end: sourceEnd.end.loc.end, range: [sourceStart.start.range[0], sourceEnd.end.range[1]], fragment: getFragment(sourceStart.sourceId, sourceStart.start.range[0], sourceEnd.end.range[1]) } }; } exports.createClone = createClone; function getFragment(id, start, end) { return source_1.sourceToString({ id: id }).substring(start, end); } exports.getFragment = getFragment; function getSourceFragment(source, start, end) { return source_1.sourceToString(source).substring(start, end); } exports.getSourceFragment = getSourceFragment; function getSourceFragmentLength(source, start, end) { return getSourceFragment(source, start, end).split('\n').length; } exports.getSourceFragmentLength = getSourceFragmentLength; function isCloneLinesBiggerLimit(clone, minLines) { return clone.duplicationA.end.line - clone.duplicationA.start.line >= minLines; } exports.isCloneLinesBiggerLimit = isCloneLinesBiggerLimit; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xvbmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSwyQ0FBaUQ7QUFDakQsMkRBQXlEO0FBQ3pELDBDQUFpRDtBQUVqRCxTQUFnQixXQUFXLENBQUMsUUFBbUIsRUFBRSxNQUFpQjtJQUN4RCxJQUFBLHdCQUFNLENBQWM7SUFDNUIsSUFBTSxXQUFXLEdBQXNCLDhCQUFhLENBQUMsUUFBUSxDQUFDLHNCQUFhLENBQUMsTUFBTSxDQUFDLENBQXNCLENBQUM7SUFDMUcsSUFBTSxXQUFXLEdBQWMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUQsSUFBTSxTQUFTLEdBQWMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFeEQsT0FBTztRQUNMLE1BQU0sUUFBQTtRQUNOLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRTtRQUMvQixZQUFZLEVBQUU7WUFDWixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7WUFDM0IsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUs7WUFDL0IsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUc7WUFDdkIsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckQsUUFBUSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZGO1FBQ0QsWUFBWSxFQUFFO1lBQ1osUUFBUSxFQUFFLFdBQVcsQ0FBQyxRQUFRO1lBQzlCLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLO1lBQ2xDLEdBQUcsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHO1lBQzFCLEtBQUssRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNELFFBQVEsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoRztLQUNGLENBQUM7QUFDSixDQUFDO0FBeEJELGtDQXdCQztBQUVELFNBQWdCLFdBQVcsQ0FBQyxFQUFVLEVBQUUsS0FBYSxFQUFFLEdBQVc7SUFDaEUsT0FBTyx1QkFBYyxDQUFDLEVBQUUsRUFBRSxJQUFBLEVBQW9CLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFGRCxrQ0FFQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLE1BQXNCLEVBQUUsS0FBYSxFQUFFLEdBQVc7SUFDbEYsT0FBTyx1QkFBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUZELDhDQUVDO0FBRUQsU0FBZ0IsdUJBQXVCLENBQUMsTUFBc0IsRUFBRSxLQUFhLEVBQUUsR0FBVztJQUN4RixPQUFPLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNsRSxDQUFDO0FBRkQsMERBRUM7QUFFRCxTQUFnQix1QkFBdUIsQ0FBQyxLQUFhLEVBQUUsUUFBZ0I7SUFDckUsT0FBTyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQztBQUNqRixDQUFDO0FBRkQsMERBRUMifQ==