ged_io
A GEDCOM parser for Rust 🦀
About
ged_io is a Rust crate for parsing GEDCOM files, the standard format for
exchanging genealogical data. It currently supports parsing GEDCOM 5.5.1 files
into structured Rust data types.
This project is a fork of
pirtleshell/rust-gedcom with
the following goals:
- Parse GEDCOM 5.5.1 files accurately
- Add support for GEDCOM 7.0 specification
- Implement write functionality for GEDCOM files
- Handle real-world GEDCOM files with proper error handling
Note: This crate is under active development. The API may change in future releases.
Features
- Parse GEDCOM 5.5.1 files into structured Rust data types
- Optional
serdeintegration for JSON serialization - Command-line tool for GEDCOM file inspection
- Basic error handling for common parsing issues
Installation
Add to your Cargo.toml:
[]
= "0.2.1"
For JSON serialization support:
[]
= { = "0.2.1", = ["json"] }
Usage
Basic Parsing
use Gedcom;
use fs;
JSON Export
Requires the json feature:
use Gedcom;
use Error;
use fs;
Command Line Tool
Install the CLI tool:
Analyze a GEDCOM file:
Example output:
----------------------
| Gedcom Data Stats: |
----------------------
submissions: 0
submitters: 1
individuals: 3
families: 2
repositories: 1
sources: 1
multimedia: 0
----------------------
Development Status
This project is under active development. The core parsing functionality works
for many GEDCOM files, but expect breaking changes in future 0.x releases as
the API evolves.
Current limitations:
- GEDCOM 7.0 support is not implemented
- Write functionality is not available
- Not all GEDCOM 5.5.1 features are fully supported
- Testing coverage needs improvement
See the Project Roadmap and GitHub Milestones for planned features.
Testing
Run tests:
The crate is tested against various GEDCOM files, including examples from Heiner Eichmann's test suite.
Contributing
Contributions are welcome. Keep in mind that the API may change as the project develops.
Areas where help is needed:
- GEDCOM 7.0 specification implementation
- Write functionality development
- Additional test cases
- Documentation improvements
- Bug reports and feature requests
License
This project is licensed under the MIT License.
Acknowledgments
Originally forked from pirtleshell/rust-gedcom.