Cleanup for Key

This commit is contained in:
Mike Phares 2023-03-30 22:32:41 -07:00
parent a68b8bc714
commit a41060c232
2 changed files with 52 additions and 37 deletions

View File

@ -1065,7 +1065,7 @@ public partial class DlibDotNet
"1 GEDC", "1 GEDC",
"2 VERS 5.5.1", "2 VERS 5.5.1",
"2 FORM LINEAGE-LINKED", "2 FORM LINEAGE-LINKED",
"1 SUBM @1980-01-17_00@", "1 SUBM @1980-01-17_05@",
"2 NAME Mike Phares Jr", "2 NAME Mike Phares Jr",
"1 SUBN", "1 SUBN",
}; };

View File

@ -23,31 +23,26 @@ internal abstract class Person
string? directory = Path.GetDirectoryName(matches[0]); string? directory = Path.GetDirectoryName(matches[0]);
if (directory is null) if (directory is null)
throw new Exception(); throw new Exception();
List<string> pGedLines = new(); string? sexLine;
string? deathLine = null;
string nameLine = $"1 NAME {name.First.Value} /{name.Last.Value}/"; string nameLine = $"1 NAME {name.First.Value} /{name.Last.Value}/";
pGedLines.Add($"0 @I{personKeyFormatted}@ INDI"); if (personKeyFormatted[^2..] is "23" or "21" or "19" or "17" or "15")
pGedLines.Add(nameLine);
if (!string.IsNullOrEmpty(name.First.Value))
pGedLines.Add($"2 GIVN {name.First.Value}");
if (!string.IsNullOrEmpty(name.Last.Value))
pGedLines.Add($"2 SURN {name.Last.Value}");
if (!string.IsNullOrEmpty(name.Alias.Value))
{ {
pGedLines.Add($"2 NICK {name.Alias.Value}"); sexLine = "1 SEX M";
if (name.Alias.Value.Contains(" Jr")) deathLine = "1 DEAT Y";
pGedLines.Add("2 NSFX Jr");
else if (name.Alias.Value.Contains(" Sr"))
pGedLines.Add("2 NSFX Sr");
} }
if (personKeyFormatted[^2..] == "23") else if (personKeyFormatted[^2..] is "22" or "20" or "18" or "16" or "14")
pGedLines.Add("1 SEX F"); {
else if (personKeyFormatted[^2..] == "22") sexLine = "1 SEX F";
pGedLines.Add("1 SEX M"); deathLine = "1 DEAT Y";
else if (personKeyFormatted[^2..] == "21") }
pGedLines.Add("1 SEX U"); else if (personKeyFormatted[^2..] is "13" or "11" or "09" or "07" or "05")
sexLine = "1 SEX M";
else if (personKeyFormatted[^2..] is "12" or "10" or "08" or "06" or "04")
sexLine = "1 SEX F";
else else
{ {
string? sexLine = null; sexLine = null;
// string[] sourceLines = File.ReadAllLines("D:/1) Images A/Images-9b89679-Results/A2) People/9b89679/([])/FamilyEcho/638157228251558818-RootsMagic-Export.ged"); // string[] sourceLines = File.ReadAllLines("D:/1) Images A/Images-9b89679-Results/A2) People/9b89679/([])/FamilyEcho/638157228251558818-RootsMagic-Export.ged");
string[] sourceLines = File.ReadAllLines("D:/1) Images A/Images-9b89679-Results/A2) People/9b89679/([])/638157314010628679.ged"); string[] sourceLines = File.ReadAllLines("D:/1) Images A/Images-9b89679-Results/A2) People/9b89679/([])/638157314010628679.ged");
for (int i = 0; i < sourceLines.Length; i++) for (int i = 0; i < sourceLines.Length; i++)
@ -60,37 +55,57 @@ internal abstract class Person
if (sourceLines[j].StartsWith("0 @I")) if (sourceLines[j].StartsWith("0 @I"))
break; break;
if (sourceLines[j].StartsWith("1 SEX ")) if (sourceLines[j].StartsWith("1 SEX "))
{
sexLine = sourceLines[j]; sexLine = sourceLines[j];
break; else if (sourceLines[j].StartsWith("1 DEAT "))
} deathLine = sourceLines[j];
} }
if (sexLine is not null)
break;
} }
if (sexLine is null) if (sexLine is null)
pGedLines.Add("1 SEX U"); sexLine = "1 SEX U";
else else
{ {
pGedLines.Add($"1 SEX {sexLine[6]}"); string sex;
string sex = sexLine[6] is 'F' ? "23" : sexLine[6] is 'M' ? "22" : sexLine[6] is 'U' ? "21" : throw new NotImplementedException(); if (deathLine is null or not "1 DEAT Y")
sex = sexLine[6] is 'M' ? "05" : sexLine[6] is 'F' ? "04" : sexLine[6] is 'U' ? "02" : throw new NotImplementedException();
else
sex = sexLine[6] is 'M' ? "15" : sexLine[6] is 'F' ? "14" : sexLine[6] is 'U' ? "03" : throw new NotImplementedException();
if (directory.EndsWith("00")) if (directory.EndsWith("00"))
directory = string.Concat(directory[..^2], sex); directory = string.Concat(directory[..^2], sex);
else if (directory.EndsWith("01")) else if (directory.EndsWith("01"))
directory = string.Concat(directory[..^2], sex); directory = string.Concat(directory[..^2], sex);
else if (directory.EndsWith("04")) // Cameran // else if (directory.EndsWith("04")) // Cameran
directory = string.Concat(directory[..^2], sex); // directory = string.Concat(directory[..^2], sex);
else if (directory.EndsWith("05")) // Daisy // else if (directory.EndsWith("05")) // Daisy
directory = string.Concat(directory[..^2], sex); // directory = string.Concat(directory[..^2], sex);
else if (directory.EndsWith("18")) // Meghan // else if (directory.EndsWith("18")) // Meghan
directory = string.Concat(directory[..^2], sex); // directory = string.Concat(directory[..^2], sex);
else if (directory.EndsWith("20")) // Joey // else if (directory.EndsWith("20")) // Joey
directory = string.Concat(directory[..^2], sex); // directory = string.Concat(directory[..^2], sex);
else else
throw new NotImplementedException(); throw new NotImplementedException();
personKeyFormatted = $"{personKeyFormatted[..^2]}{sex}"; personKeyFormatted = $"{personKeyFormatted[..^2]}{sex}";
} }
} }
List<string> pGedLines = new()
{
$"0 @I{personKeyFormatted}@ INDI",
nameLine
};
if (!string.IsNullOrEmpty(name.First.Value))
pGedLines.Add($"2 GIVN {name.First.Value}");
if (!string.IsNullOrEmpty(name.Last.Value))
pGedLines.Add($"2 SURN {name.Last.Value}");
if (!string.IsNullOrEmpty(name.Alias.Value))
{
pGedLines.Add($"2 NICK {name.Alias.Value}");
if (name.Alias.Value.Contains(" Jr"))
pGedLines.Add("2 NSFX Jr");
else if (name.Alias.Value.Contains(" Sr"))
pGedLines.Add("2 NSFX Sr");
}
pGedLines.Add(sexLine);
if (!string.IsNullOrEmpty(deathLine))
pGedLines.Add(deathLine);
if (!IPersonBirthday.IsCounterPersonBirthday(personBirthday)) if (!IPersonBirthday.IsCounterPersonBirthday(personBirthday))
{ {
pGedLines.Add("1 BIRT"); pGedLines.Add("1 BIRT");