Giter Club home page Giter Club logo

rust-gedcom's Introduction

rust-gedcom

A gedcom parser written in rust ๐Ÿฆ€

About this project

GEDCOM is a file format for sharing genealogical information like family trees.

rust-gedcom hopes to be fully mostly compliant with the Gedcom 5.5.1 specification.

Later specifications, such as 5.5.2 and 7.0.11, are useful in assessing which tags are worth supporting or not.

Usage

This crate comes in two parts. The first is a binary called parse_gedcom, mostly used for testing & development. It prints the GedcomData object and some stats about the GEDCOM file passed into it:

parse_gedcom ./tests/fixtures/sample.ged

# outputs tree data here w/ stats
# ----------------------
# | Gedcom Data Stats: |
# ----------------------
#   submissions: 0
#   submitters: 1
#   individuals: 3
#   families: 2
#   repositories: 1
#   sources: 1
#   multimedia: 0
# ----------------------

The second is a library containing the parser.

JSON Serializing/Deserializing with serde

This crate has an optional feature called json that implements Serialize & Deserialize for the gedcom data structure. This allows you to easily integrate with the web.

For more info about serde, check them out!

The feature is not enabled by default. There are zero dependencies if just using the gedcom parsing functionality.

Use the json feature with any version >=0.2.1 by adding the following to your Cargo.toml:

gedcom = { version = "<version>", features = ["json"] }

๐Ÿšง Progress ๐Ÿšง

There are still parts of the specification not yet implemented, and the project is subject to change. The way development has been happening is by taking a GEDCOM file, attempting to parse it and acting on whatever errors or omissions occur. In its current state, it is capable of parsing Heiner Eichmann's allged.ged in its entirety.

Here are some notes about parsed data & tags. Page references are to the Gedcom 5.5.1 specification.

Top-level tags

Tags for families (FAM), individuals (IND), repositories (REPO), sources (SOUR), and submitters (SUBM) are handled. Many of the most common sub-tags for these are handled though some may not yet be parsed. Mileage may vary.

License

Licensed under MIT.

rust-gedcom's People

Contributors

pirtleshell avatar ge3224 avatar

Stargazers

 avatar James Pae avatar

Watchers

N. P. Maling avatar

Forkers

jmspae

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.