Files
SPT-Server-Build/Libraries/Core/Utils/CompareUtil.cs
T

62 lines
1.8 KiB
C#

using SptCommon.Annotations;
namespace Core.Utils;
[Injectable]
public class CompareUtil
{
private readonly HashSet<string> typesToCheckAgainst =
[
"string",
"number",
"boolean",
"bigint",
"symbol",
"undefined",
"null"
];
/**
* This function does an object comparison, equivalent to applying reflections
* and scanning for all possible properties including arrays.
* @param v1 value 1 to compare
* @param v2 value 2 to compare
* @returns true if equal, false if not
*/
public bool RecursiveCompare(object v1, object v2)
{
// TODO: Fix this shit.
// const typeOfv1 = typeof v1;
// const typeOfv2 = typeof v2;
// if (CompareUtil.typesToCheckAgainst.has(typeOfv1)) {
// return v1 === v2;
// }
// if (typeOfv1 === "object" && typeOfv2 === "object") {
// if (Array.isArray(v1)) {
// if (!Array.isArray(v2)) {
// return false;
// }
// const arr1 = v1 as Array<any>;
// const arr2 = v2 as Array<any>;
// if (arr1.length !== arr2.length) {
// return false;
// }
// return arr1.every((vOf1) => arr2.find((vOf2) => this.recursiveCompare(vOf1, vOf2)));
// }
// for (const propOf1 in v1) {
// if (v2[propOf1] === undefined) {
// return false;
// }
// return this.recursiveCompare(v1[propOf1], v2[propOf1]);
// }
// }
// if (typeOfv1 === typeOfv2) {
// return v1 === v2;
// }
//
// return false;
throw new NotImplementedException();
}
}