using System.Text.RegularExpressions; using System.IO; using Newtonsoft.Json.Linq; namespace libObsidean { public class MarkdownTableParser { public static string[,] ParseTableFromMarkdown(string filePath) { var lines = File.ReadAllLines(filePath); var tableLines = ExtractTableLines(lines); return ConvertTableLinesToArray(tableLines); } private static List ExtractTableLines(string[] lines) { List tableLines = new List(); bool inTable = false; foreach (var line in lines) { if (line.StartsWith("|") && line.EndsWith("|")) { inTable = true; tableLines.Add(line.Trim()); } else if (inTable) { break; } } return tableLines; } private static string[,] ConvertTableLinesToArray(List tableLines) { if (tableLines.Count == 0) return new string[0, 0]; var header = tableLines[0].Split('|').Select(h => h.Trim()).Where(h => !string.IsNullOrEmpty(h)).ToArray(); int columns = header.Length; int rows = tableLines.Count - 1; string[,] tableArray = new string[rows, columns]; for (int i = 1; i <= rows; i++) { var row = tableLines[i].Split('|').Select(r => r.Trim()).Where(r => !string.IsNullOrEmpty(r)).ToArray(); for (int j = 0; j < columns; j++) { tableArray[i - 1, j] = row[j]; } } return tableArray; } } }