Skip to content

A .Net Standard library for loading, saving, working with and analysing family trees stored in the GEDCOM format.

License

Notifications You must be signed in to change notification settings

warthenr/GeneGenie.Gedcom

 
 

Repository files navigation

GeneGenie.Gedcom

A .Net Standard library for loading, saving, working with and analysing family trees stored in the GEDCOM format.

Thank you to David A Knight who developed Gedcom.Net from which this project was forked.

Installation

Whilst we are below version 1.0 we won't be releasing a Nuget package (unless the .Net core / 4.5.x multi targeting issue #5 is handled before then). To use the library, please download the source and star / set the repository as watched so you receive updates.

Basic usage

If you would like to see a specific sample please let us know what you want via Twitter (@ryanoneill1970) or create an issue in GitHub.

Check the sample project out for working code, basic operations are;

Loading a tree

To load a tree into memory use the following static helper.

var gedcomReader = GedcomRecordReader.CreateReader("Data\\presidents.ged");

There are other variants of this helper and non static methods that allow you to specify additional parameters such as encoding.

You'll want to make sure that the file you just read was parsed OK and handle any failures;

if (gedcomReader.Parser.ErrorState != Parser.Enums.GedcomErrorState.NoError)
{
    Console.WriteLine($"Could not read file, encountered error {gedcomReader.Parser.ErrorState}.");
}

Querying the tree

Console.WriteLine($"Found {db.Families.Count} families and {db.Individuals.Count} individuals.");
var individual = db
    .Individuals
    .FirstOrDefault(f => f.Names.Any());

if (individual != null)
{
    Console.WriteLine($"Individual found with a preferred name of '{individual.GetName()}'.");
}

Adding a person to the tree

var individual = new GedcomIndividualRecord(db);

var name = individual.Names[0];
name.Given = "Michael";
name.Surname = "Mouse";
name.Nick = "Mickey";

individual.Names.Add(name);

var birthDate = new GedcomDate(db);
birthDate.ParseDateString("24 Jan 1933");
individual.Events.Add(new GedcomIndividualEvent
{
    Database = db,
    Date = birthDate,
    EventType = Enums.GedcomEventType.Birth
});

Saving the tree

GedcomRecordWriter.OutputGedcom(db, "Rewritten.ged");

Current build status

AppVeyor branch NuGet AppVeyor tests

Code quality

Maintainability Quality gate Bugs Vulnerabilities Code smells Coverage Duplications Reliability Security Security Lines of code

Build stats

Contributing

We would love your help, see Contributing.md for guidelines.

About

A .Net Standard library for loading, saving, working with and analysing family trees stored in the GEDCOM format.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 99.7%
  • Other 0.3%