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
JavaScript
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==
;