commits
- Add comprehensive CLI tool with cmdliner and Eio backend
- Implement waypoint-to-trackset conversion with sorting options
- Add info command with detailed GPX analysis and time range display
- Add GPX 1.0 support alongside existing GPX 1.1 support
- Add ANSI color output with terminal detection using fmt library
- Update documentation with CLI usage examples
- Rename branding from 'MLGpx' to 'mlgpx' throughout
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit adds a complete test infrastructure covering both Unix and Eio
implementations, along with XML writer/parser fixes for proper round-trip
functionality.
**New Test Infrastructure:**
- Created 9 synthetic GPX test files covering diverse features:
* simple_waypoints.gpx, detailed_waypoints.gpx, simple_route.gpx
* simple_track.gpx, multi_segment_track.gpx, comprehensive.gpx
* minimal.gpx, edge_cases.gpx, invalid.gpx
- Added comprehensive alcotest suite (58 passing tests):
* Unix vs Eio equivalence testing
* Round-trip testing (write鈫抪arse鈫抴rite consistency)
* Validation testing across all test files
* Performance comparison between backends
* Error handling validation
- Added ppx_expect inline tests for parser validation
**New Eio Implementation:**
- Complete Eio-based I/O layer using real Eio APIs
- Exception-based error handling (vs result-based Unix layer)
- Proper Eio.Path and Eio.Flow integration
- Effects-style example with structured concurrency
- Optional compilation when eio_main available
**Critical XML Fixes:**
- Fixed XML writer namespace declaration format
- Corrected XML header generation (removed double declaration)
- Ensured generated XML correctly parses (round-trip compatibility)
- Fixed attribute namespace handling for GPX schema validation
**Enhanced Documentation:**
- Updated README with three-layer architecture description
- Added comprehensive API examples for both Unix and Eio layers
- Documented all major features and usage patterns
All tests pass: Unix parsing, Eio parsing, cross-backend equivalence,
round-trip validation, and error handling work correctly.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Implemented complete GPX 1.1 parsing and writing library
* Core library (gpx): Portable streaming parser/writer with no Unix dependencies
* Unix layer (gpx_unix): Convenient file I/O and validation functions
* Clean module structure: Types, Parser, Writer, Validate (no gpx_ prefixes)
* Comprehensive documentation with usage examples
* Type-safe coordinate validation and GPS data handling
* Memory-efficient streaming XML processing using xmlm
* Extension support for custom XML elements
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add comprehensive CLI tool with cmdliner and Eio backend
- Implement waypoint-to-trackset conversion with sorting options
- Add info command with detailed GPX analysis and time range display
- Add GPX 1.0 support alongside existing GPX 1.1 support
- Add ANSI color output with terminal detection using fmt library
- Update documentation with CLI usage examples
- Rename branding from 'MLGpx' to 'mlgpx' throughout
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit adds a complete test infrastructure covering both Unix and Eio
implementations, along with XML writer/parser fixes for proper round-trip
functionality.
**New Test Infrastructure:**
- Created 9 synthetic GPX test files covering diverse features:
* simple_waypoints.gpx, detailed_waypoints.gpx, simple_route.gpx
* simple_track.gpx, multi_segment_track.gpx, comprehensive.gpx
* minimal.gpx, edge_cases.gpx, invalid.gpx
- Added comprehensive alcotest suite (58 passing tests):
* Unix vs Eio equivalence testing
* Round-trip testing (write鈫抪arse鈫抴rite consistency)
* Validation testing across all test files
* Performance comparison between backends
* Error handling validation
- Added ppx_expect inline tests for parser validation
**New Eio Implementation:**
- Complete Eio-based I/O layer using real Eio APIs
- Exception-based error handling (vs result-based Unix layer)
- Proper Eio.Path and Eio.Flow integration
- Effects-style example with structured concurrency
- Optional compilation when eio_main available
**Critical XML Fixes:**
- Fixed XML writer namespace declaration format
- Corrected XML header generation (removed double declaration)
- Ensured generated XML correctly parses (round-trip compatibility)
- Fixed attribute namespace handling for GPX schema validation
**Enhanced Documentation:**
- Updated README with three-layer architecture description
- Added comprehensive API examples for both Unix and Eio layers
- Documented all major features and usage patterns
All tests pass: Unix parsing, Eio parsing, cross-backend equivalence,
round-trip validation, and error handling work correctly.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Implemented complete GPX 1.1 parsing and writing library
* Core library (gpx): Portable streaming parser/writer with no Unix dependencies
* Unix layer (gpx_unix): Convenient file I/O and validation functions
* Clean module structure: Types, Parser, Writer, Validate (no gpx_ prefixes)
* Comprehensive documentation with usage examples
* Type-safe coordinate validation and GPS data handling
* Memory-efficient streaming XML processing using xmlm
* Extension support for custom XML elements
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>