Files
alexandrev-tibco a8eda5c0a2 Comparison engine: ZIP-aware trees, layered diffing, semantic JSON/XML
First slice of Cotejo, a Beyond Compare-style tool for macOS. The engine has no
UI dependencies so the same code can back a CLI later.

- ZipReader: own central-directory parser (no third-party zip), inflating via the
  system Compression framework and handling ZIP64. Because the directory already
  carries每 entry's CRC32 and size, two archives can be compared entry by entry
  without decompressing anything; bytes are only inflated when an entry is opened.
- TreeScanner: folders and archives scan into one tree type, so JAR/EAR/WAR are
  browsed as directories — nested archives included (EAR -> JAR -> classes).
- DirectoryComparer: layered so large trees stay fast. Cheap checks (size, CRC)
  can prove files identical but never that they differ, since JSON/XML with other
  bytes may still be equivalent; whatever they can't settle is read, or left
  pending under a size limit and resolved on demand.
- ContentComparer: byte-for-byte, text with configurable tolerances, and semantic
  equality for JSON (key order irrelevant, array order significant, true != 1)
  and XML (attribute order and whitespace irrelevant, element order significant).

25 tests, including an EAR containing a JAR.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UfhDYRLTpGJSKGP1m3LVJN
2026-07-27 12:28:51 +02:00

5 lines
43 B
Plaintext

.DS_Store
.build/
*.xcodeproj
DerivedData/