This compares a pair of components. It first identifies nodes that are unique to either of the two components.
Then for the nodes that exist in both components, it identifies differences in parameters, flags, input wiring, hierarchy wiring, language, tags and comments.
For nodes that are in both components, it checks the operator family and type, and reports if they are different.
It reports on DATs whose contents differ (Text, Table and the Execute DATs, and DATs that are locked).
Using "Only in Component 1" and "Only in Component 2", it shows nodes that exist in one component but not the other.
If you turn on the parameters "Flags", "Parameters" etc, it will compare the Flags, Parameters etc of nodes that are in both components, showing the differences in columns "value1" and "value2".
"Wiring" reports on the input wires of nodes including components, as well as hierarchy (bottom to top) connections of 3d object components and panel components.
"Miscellaneous" look at tags, comments and mis-matched node types.
The "Cosmetics" option checks for things that don't matter in the function of the node, like viewer state and node position in the network.
The two built-in test components illustrate the various comparisons.
The component outputs the DAT you see in the viewer.
If you turn on "Remove Unused Cols", it will make the table simpler. For example, it will not display/output column "onlyInComp2" if the parameter "Only in Component 2" is off, etc.
I don't know how many times I've wanted to know what I've changed between two versions of a component. This gives a good comparison.
compareComp doesn't check everything yet - you can add what you feel is necessary within this structure. Not implemented is locked CHOPs or TOPs, and it doesn't co-relate a node that was renamed. Nonetheless, the results are illuminating.