Markdown update

This commit is contained in:
2023-07-19 21:58:34 -07:00
parent 566dc15311
commit 3eeb9cde00

View File

@ -1,4 +1,5 @@
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
namespace View_by_Distance.Shared.Models.Stateless.Methods; namespace View_by_Distance.Shared.Models.Stateless.Methods;
@ -10,7 +11,6 @@ internal abstract class MarkDown
internal static void WriteFile(string personKeyFormatted, long ticks, Models.PersonName personName, List<GenealogicalDataCommunicationRelation> genealogicalDataCommunicationRelations, string a2PeopleContentDirectory, ReadOnlyDictionary<string, string> personKeyFormattedToPersonFullName, ReadOnlyDictionary<int, List<GenealogicalDataCommunicationRelation>> familyIndexToCollection, bool isDefaultName, Models.GenealogicalDataCommunication genealogicalDataCommunication, bool first) internal static void WriteFile(string personKeyFormatted, long ticks, Models.PersonName personName, List<GenealogicalDataCommunicationRelation> genealogicalDataCommunicationRelations, string a2PeopleContentDirectory, ReadOnlyDictionary<string, string> personKeyFormattedToPersonFullName, ReadOnlyDictionary<int, List<GenealogicalDataCommunicationRelation>> familyIndexToCollection, bool isDefaultName, Models.GenealogicalDataCommunication genealogicalDataCommunication, bool first)
{ {
string decade; string decade;
string jrOrSr; string jrOrSr;
string? personFullName; string? personFullName;
@ -18,7 +18,7 @@ internal abstract class MarkDown
const char mother = 'M'; const char mother = 'M';
bool hasRelation = false; bool hasRelation = false;
const string wife = "WIFE"; const string wife = "WIFE";
string lowerHyphenRelation; StringBuilder link = new();
const string child = "CHIL"; const string child = "CHIL";
const string husband = "HUSB"; const string husband = "HUSB";
const string person = "person"; const string person = "person";
@ -30,12 +30,12 @@ internal abstract class MarkDown
List<string> lines = new() List<string> lines = new()
{ {
"---", "---",
$"type: {person}", $"type: '{person}'",
$"created: {now}", $"created: {now}",
$"updated: {now}", $"updated: {now}",
$"draft: false", $"draft: false",
$"title: '{fullName}'", $"title: '{fullName}'",
$"{nameof(fullName)}: '{fullName}'", $"{nameof(lowerHyphenFullName)}: '{lowerHyphenFullName}'",
}; };
if (string.IsNullOrEmpty(personName.Alias.Value)) if (string.IsNullOrEmpty(personName.Alias.Value))
jrOrSr = string.Empty; jrOrSr = string.Empty;
@ -77,10 +77,12 @@ internal abstract class MarkDown
lines.Add($"{nameof(personKeyFormatted)}: '{personKeyFormatted}'"); lines.Add($"{nameof(personKeyFormatted)}: '{personKeyFormatted}'");
lines.Add("---"); lines.Add("---");
lines.Add(string.Empty); lines.Add(string.Empty);
lines.Add($"# {lowerHyphenFullName}"); lines.Add($"# {fullName}");
lines.Add(string.Empty); lines.Add(string.Empty);
foreach (GenealogicalDataCommunicationRelation genealogicalDataCommunicationRelation in genealogicalDataCommunicationRelations) foreach (GenealogicalDataCommunicationRelation genealogicalDataCommunicationRelation in genealogicalDataCommunicationRelations)
{ {
if (genealogicalDataCommunication?.NickName is null || genealogicalDataCommunication.NickName.Length < 4)
continue;
if (genealogicalDataCommunicationRelation.Relation != child) if (genealogicalDataCommunicationRelation.Relation != child)
continue; continue;
if (genealogicalDataCommunicationRelation.NickName != personKeyFormatted) if (genealogicalDataCommunicationRelation.NickName != personKeyFormatted)
@ -100,28 +102,40 @@ internal abstract class MarkDown
hasRelation = true; hasRelation = true;
} }
decade = relation.NickName[..3]; decade = relation.NickName[..3];
_ = link.Clear();
_ = link.Append("- [");
if (!personKeyFormattedToPersonFullName.TryGetValue(relation.NickName, out personFullName)) if (!personKeyFormattedToPersonFullName.TryGetValue(relation.NickName, out personFullName))
lowerHyphenRelation = relation.NickName; _ = link.Append(relation.NickName);
else else
lowerHyphenRelation = Regex.Replace(personFullName.ToLower(), "[^a-z0-9-]", "-").Replace("--", "-"); _ = link.Append(personFullName);
if (genealogicalDataCommunication.NickName[..3] == decade)
_ = link.Append("](");
else
_ = link.Append("](../").Append(decade).Append('/');
if (personFullName is null)
_ = link.Append(relation.NickName);
else
_ = link.Append(Regex.Replace(personFullName.ToLower(), "[^a-z0-9-]", "-").Replace("--", "-"));
_ = link.Append(".md) ");
if (string.IsNullOrEmpty(genealogicalDataCommunicationRelation.LineTwo)) if (string.IsNullOrEmpty(genealogicalDataCommunicationRelation.LineTwo))
lines.Add($"- [[{person}/{decade}/{lowerHyphenRelation}]]"); lines.Add(link.ToString());
else else
{ {
if (genealogicalDataCommunicationRelation.LineTwo[1] == father) if (genealogicalDataCommunicationRelation.LineTwo[1] == father)
{ {
if (relation.Relation == wife) if (relation.Relation == wife)
lines.Add($"- [[{person}/{decade}/{lowerHyphenRelation}]] {nameof(mother)}"); _ = link.Append(nameof(mother));
else if (relation.Relation == husband) else if (relation.Relation == husband)
lines.Add($"- [[{person}/{decade}/{lowerHyphenRelation}]] {genealogicalDataCommunicationRelation.LineTwo.Split(' ').Last()} {nameof(father)}"); _ = link.Append(genealogicalDataCommunicationRelation.LineTwo.Split(' ').Last()).Append(nameof(father));
} }
else if (genealogicalDataCommunicationRelation.LineTwo[1] == mother) else if (genealogicalDataCommunicationRelation.LineTwo[1] == mother)
{ {
if (relation.Relation == husband) if (relation.Relation == husband)
lines.Add($"- [[{person}/{decade}/{lowerHyphenRelation}]] {nameof(father)}"); _ = link.Append(nameof(father));
else if (relation.Relation == wife) else if (relation.Relation == wife)
lines.Add($"- [[{person}/{decade}/{lowerHyphenRelation}]] {genealogicalDataCommunicationRelation.LineTwo.Split(' ').Last()} {nameof(mother)}"); _ = link.Append(genealogicalDataCommunicationRelation.LineTwo.Split(' ').Last()).Append(nameof(mother));
} }
lines.Add(link.ToString());
} }
} }
} }