yaml array support

This commit is contained in:
Mike Phares 2023-07-21 22:40:04 -07:00
parent 23e45671c3
commit a18fb1e756

View File

@ -10,20 +10,41 @@ internal abstract class MarkDown
// ... // ...
internal static List<string> GetFrontMatterLines(long ticks, string fullName, string lowerHyphenFullName, Models.GenealogicalDataCommunication genealogicalDataCommunication) private static List<string> GetFrontMatterLines(string[] parsedLines)
{ {
List<string> results = new(); List<string> results = new();
string afterTrim; string afterTrim;
string[] segments; string[] segments;
string[] jsonLines = genealogicalDataCommunication.ToString().Split(Environment.NewLine); StringBuilder stringBuilder = new();
foreach (string jsonLine in jsonLines) for (int i = 0; i < parsedLines.Length; i++)
{ {
afterTrim = jsonLine.Trim(); afterTrim = parsedLines[i].Trim();
if (string.IsNullOrEmpty(afterTrim) || afterTrim.First() is '{' or '}') if (string.IsNullOrEmpty(afterTrim) || afterTrim.First() is '{' or '}')
continue; continue;
segments = afterTrim.Split(": "); segments = afterTrim.Split(": ");
if (segments.Length != 2) if (segments.Length != 2)
{ {
if (results.Last()[^1] == '[')
{
_ = stringBuilder.Clear();
_ = stringBuilder.Append(results.Last());
results.RemoveAt(results.Count - 1);
for (int j = i; j < parsedLines.Length; j++)
{
i = j;
afterTrim = parsedLines[j].Trim();
if (afterTrim != "],")
_ = stringBuilder.Append(afterTrim);
else
_ = stringBuilder.Append(afterTrim[..^1]);
if (afterTrim is "]" or "],")
{
results.Add(stringBuilder.ToString());
break;
}
}
continue;
}
results.Clear(); results.Clear();
break; break;
} }
@ -32,6 +53,14 @@ internal abstract class MarkDown
else else
results.Add(afterTrim[1..^1].Replace("\": ", ": ")); results.Add(afterTrim[1..^1].Replace("\": ", ": "));
} }
return results;
}
internal static List<string> GetFrontMatterLines(long ticks, string fullName, string lowerHyphenFullName, Models.GenealogicalDataCommunication genealogicalDataCommunication)
{
List<string> results;
string[] parsedLines = genealogicalDataCommunication.ToString().Split(Environment.NewLine);
results = GetFrontMatterLines(parsedLines);
if (results.Any()) if (results.Any())
{ {
DateTime dateTime = new DateTime(ticks).ToUniversalTime(); DateTime dateTime = new DateTime(ticks).ToUniversalTime();