58 lines
1.8 KiB
JavaScript
58 lines
1.8 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
/**
|
|
* Compares 2 sets of grid fragments to each other and checks if they have the same
|
|
* general geometry.
|
|
* This means that things like areas, area names or line names are ignored.
|
|
* This only checks if the 2 sets of fragments have as many fragments, as many lines, and
|
|
* that those lines are at the same distance.
|
|
*
|
|
* @param {Array} fragments1
|
|
* A list of gridFragment objects.
|
|
* @param {Array} fragments2
|
|
* Another list of gridFragment objects to compare to the first list.
|
|
* @return {Boolean}
|
|
* True if the fragments are the same, false otherwise.
|
|
*/
|
|
function compareFragmentsGeometry(fragments1, fragments2) {
|
|
// Compare the number of fragments.
|
|
if (fragments1.length !== fragments2.length) {
|
|
return false;
|
|
}
|
|
|
|
// Compare the number of areas, rows and columns.
|
|
for (let i = 0; i < fragments1.length; i++) {
|
|
if (
|
|
fragments1[i].cols.lines.length !== fragments2[i].cols.lines.length ||
|
|
fragments1[i].rows.lines.length !== fragments2[i].rows.lines.length
|
|
) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Compare the offset of lines.
|
|
for (let i = 0; i < fragments1.length; i++) {
|
|
for (let j = 0; j < fragments1[i].cols.lines.length; j++) {
|
|
if (
|
|
fragments1[i].cols.lines[j].start !== fragments2[i].cols.lines[j].start
|
|
) {
|
|
return false;
|
|
}
|
|
}
|
|
for (let j = 0; j < fragments1[i].rows.lines.length; j++) {
|
|
if (
|
|
fragments1[i].rows.lines[j].start !== fragments2[i].rows.lines[j].start
|
|
) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
module.exports.compareFragmentsGeometry = compareFragmentsGeometry;
|