Initial Commit
This commit is contained in:
78
node_modules/dir-compare/build/src/fileCompareHandler/lines/compare/compareLines.js
generated
vendored
Normal file
78
node_modules/dir-compare/build/src/fileCompareHandler/lines/compare/compareLines.js
generated
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.compareLines = void 0;
|
||||
const TRIM_WHITE_SPACES_REGEXP = /^[ \f\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+|[ \f\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+$/g;
|
||||
const TRIM_LINE_ENDING_REGEXP = /\r\n|\n$/g;
|
||||
const REMOVE_WHITE_SPACES_REGEXP = /[ \f\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]/g;
|
||||
function compareLines(lines1, lines2, options) {
|
||||
if (options.ignoreEmptyLines) {
|
||||
lines1 = removeEmptyLines(lines1);
|
||||
lines2 = removeEmptyLines(lines2);
|
||||
}
|
||||
const len = Math.min(lines1.length, lines2.length);
|
||||
let i = 0;
|
||||
for (; i < len; i++) {
|
||||
const isEqual = compareLine(options, lines1[i], lines2[i]);
|
||||
if (!isEqual) {
|
||||
return { isEqual: false, restLines1: [], restLines2: [] };
|
||||
}
|
||||
}
|
||||
return {
|
||||
isEqual: true,
|
||||
restLines1: lines1.slice(i),
|
||||
restLines2: lines2.slice(i)
|
||||
};
|
||||
}
|
||||
exports.compareLines = compareLines;
|
||||
function compareLine(options, line1, line2) {
|
||||
if (options.ignoreLineEnding) {
|
||||
line1 = trimLineEnding(line1);
|
||||
line2 = trimLineEnding(line2);
|
||||
}
|
||||
if (options.ignoreWhiteSpaces) {
|
||||
line1 = trimSpaces(line1);
|
||||
line2 = trimSpaces(line2);
|
||||
}
|
||||
if (options.ignoreAllWhiteSpaces) {
|
||||
line1 = removeSpaces(line1);
|
||||
line2 = removeSpaces(line2);
|
||||
}
|
||||
return line1 === line2;
|
||||
}
|
||||
// Trims string like ' abc \n' into 'abc\n'
|
||||
function trimSpaces(s) {
|
||||
const { content, lineEnding } = separateEol(s);
|
||||
const trimmed = content.replace(TRIM_WHITE_SPACES_REGEXP, '');
|
||||
return trimmed + lineEnding;
|
||||
}
|
||||
function trimLineEnding(s) {
|
||||
return s.replace(TRIM_LINE_ENDING_REGEXP, '');
|
||||
}
|
||||
function removeSpaces(s) {
|
||||
return s.replace(REMOVE_WHITE_SPACES_REGEXP, '');
|
||||
}
|
||||
function removeEmptyLines(lines) {
|
||||
return lines.filter(line => !isEmptyLine(line));
|
||||
}
|
||||
function isEmptyLine(line) {
|
||||
return line === '\n' || line === '\r\n';
|
||||
}
|
||||
function separateEol(s) {
|
||||
const len = s.length;
|
||||
let lineEnding = '';
|
||||
let content = s;
|
||||
if (s[len - 1] === '\n') {
|
||||
if (s[len - 2] === '\r') {
|
||||
return {
|
||||
lineEnding: '\r\n',
|
||||
content: s.slice(0, len - 2)
|
||||
};
|
||||
}
|
||||
{
|
||||
lineEnding = '\n';
|
||||
content = s.slice(0, len - 1);
|
||||
}
|
||||
}
|
||||
return { content, lineEnding };
|
||||
}
|
||||
//# sourceMappingURL=compareLines.js.map
|
||||
Reference in New Issue
Block a user