UNPKG

@lichtblick/message-definition

Version:

Defines common types for message definition schemas (ROS .msg, Protobuf, FlatBuffers, IDL, PX4 ULog, JSON Schema, etc)

63 lines 2.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isMsgDefEqual = exports.isMsgDefFieldEqual = void 0; /** * Deep equality comparison of two DefaultValue values. Two default values are considered equal * if they are both arrays and all their elements are equal, or if they are both primitives and * equal. * * @param lhs Left-hand side of the comparison. * @param rhs Right-hand side of the comparison. * @returns True if the two default values are equal, false otherwise. */ function defaultValuesEqual(lhs, rhs) { if (Array.isArray(lhs) && Array.isArray(rhs)) { if (lhs.length !== rhs.length) { return false; } for (let i = 0; i < lhs.length; i++) { if (lhs[i] !== rhs[i]) { return false; } } return true; } return lhs === rhs; } /** * Compares two MessageDefinitionField objects for equality. Two fields are considered equal if all * their properties are equal. Assumes default values (False) for boolean properties that are undefined. * * @param lhs MessageDefinitionField field * @param rhs MessageDefinitionField field to compare with * @returns True if the two fields are equal, false otherwise. */ function isMsgDefFieldEqual(lhs, rhs) { return (lhs.type === rhs.type && lhs.name === rhs.name && (lhs.isComplex ?? false) === (rhs.isComplex ?? false) && (lhs.isArray ?? false) === (rhs.isArray ?? false) && lhs.arrayLength === rhs.arrayLength && (lhs.isConstant ?? false) === (rhs.isConstant ?? false) && lhs.value === rhs.value && lhs.valueText === rhs.valueText && lhs.upperBound === rhs.upperBound && lhs.arrayUpperBound === rhs.arrayUpperBound && defaultValuesEqual(lhs.defaultValue, rhs.defaultValue)); } exports.isMsgDefFieldEqual = isMsgDefFieldEqual; /** * Compares two MessageDefinition objects for equality. Two message definitions are considered * equal if their name (if given) and all their definitions equal. * * @param lhs MessageDefinition message definition * @param rhs MessageDefinition message definition to compare with * @returns True if the two message definitions are equal, false otherwise. */ function isMsgDefEqual(lhs, rhs) { return ((lhs.name == undefined || rhs.name == undefined || lhs.name === rhs.name) && lhs.definitions.length === rhs.definitions.length && lhs.definitions.every((def, i) => isMsgDefFieldEqual(def, rhs.definitions[i]))); } exports.isMsgDefEqual = isMsgDefEqual; //# sourceMappingURL=compare.js.map