public LogReportPack CreateFromLines(string[] lines) { LogReportPack pack = new LogReportPack(); LogReport parsedReport = null; LogReport currentReport = null; LogReportItem item = null; foreach (string line in lines) { if (LogReport.TryCreateFromHeader(line, out parsedReport)) { currentReport = parsedReport; pack.Reports.Add(currentReport); continue; } if (LogReportItem.TryCreateFromString(line, out item)) { if (null != currentReport) { currentReport.Items.Add(item); } } } return(pack); }
public static bool TryCreateFromHeader(string header, out LogReport report) { report = null; Match match = Regex.Match(header, PATTERN); Group dateGroup = match.Groups["date"]; Group nameGroup = match.Groups["name"]; if (!(dateGroup.Success && nameGroup.Success)) { return(false); } string dateStr = dateGroup.Value; string nameStr = nameGroup.Value; DateTime dt = DateTime.Parse(dateStr); report = new LogReport { Name = nameStr, CreationDate = dt }; return(true); }