From a18fb1e756fa3d0704312179e616bab6edff026d Mon Sep 17 00:00:00 2001 From: Mike Phares Date: Fri, 21 Jul 2023 22:40:04 -0700 Subject: [PATCH] yaml array support --- Shared/Models/Stateless/Methods/MarkDown.cs | 37 ++++++++++++++++++--- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/Shared/Models/Stateless/Methods/MarkDown.cs b/Shared/Models/Stateless/Methods/MarkDown.cs index 1e2eb9b..5ef939d 100644 --- a/Shared/Models/Stateless/Methods/MarkDown.cs +++ b/Shared/Models/Stateless/Methods/MarkDown.cs @@ -10,20 +10,41 @@ internal abstract class MarkDown // ... - internal static List GetFrontMatterLines(long ticks, string fullName, string lowerHyphenFullName, Models.GenealogicalDataCommunication genealogicalDataCommunication) + private static List GetFrontMatterLines(string[] parsedLines) { List results = new(); string afterTrim; string[] segments; - string[] jsonLines = genealogicalDataCommunication.ToString().Split(Environment.NewLine); - foreach (string jsonLine in jsonLines) + StringBuilder stringBuilder = new(); + for (int i = 0; i < parsedLines.Length; i++) { - afterTrim = jsonLine.Trim(); + afterTrim = parsedLines[i].Trim(); if (string.IsNullOrEmpty(afterTrim) || afterTrim.First() is '{' or '}') continue; segments = afterTrim.Split(": "); 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(); break; } @@ -32,6 +53,14 @@ internal abstract class MarkDown else results.Add(afterTrim[1..^1].Replace("\": ", ": ")); } + return results; + } + + internal static List GetFrontMatterLines(long ticks, string fullName, string lowerHyphenFullName, Models.GenealogicalDataCommunication genealogicalDataCommunication) + { + List results; + string[] parsedLines = genealogicalDataCommunication.ToString().Split(Environment.NewLine); + results = GetFrontMatterLines(parsedLines); if (results.Any()) { DateTime dateTime = new DateTime(ticks).ToUniversalTime();