static async Task ComposeTextResultBlock(TextWriter writer, Func<int> lineNumberGetter, Action<int> lineNumberSetter, TextResult result) { var lineNumber = lineNumberGetter(); //(lijn 1:)#Rb positie 1-3:duidt begin aan van verslag) lineNumber++; await writer.WriteLineAsync("#Rb"); //(lijn 2:) evt identificatie van de analyse (positie 1-56) //formaat: '!'gevolgd door trefwoord lineNumber++; await writer.WriteLineAsync(string.Concat("!", result.Name?.TrimToMaxSize(56))); //(lijn 3: vanaf hier begint het eigenlijke verslag) using (var sr = new StringReader(result.Text)) { string line; while ((line = sr.ReadLine()) != null) { lineNumber++; await writer.WriteLineAsync(line/*.TrimToMaxSize(75)*/); } } lineNumber++; await writer.WriteLineAsync("#R/"); lineNumberSetter(lineNumber); }
static async Task<TextResult> ParseTextResultBlock(TextReader reader, Func<int> lineNumberGetter, Action<int> lineNumberSetter, IDictionary<int, IList<string>> parserErrors) { //(lijn 1:)#Rb positie 1-3:duidt begin aan van verslag) var result = new TextResult(); var lineNumber = lineNumberGetter(); //(lijn 2:) evt identificatie van de analyse (positie 1-56) //formaat: '!'gevolgd door trefwoord lineNumber++; var line = await reader.ReadLineAsync(); if (line.StartsWith(@"!")) { result.Name = line?.Trim(); lineNumber++; line = await reader.ReadLineAsync(); } //(lijn 3: vanaf hier begint het eigenlijke verslag) var sb = new StringBuilder(); do { sb.AppendLine(line); lineNumber++; } while ((line = (await reader.ReadLineAsync())) != null && !line.StartsWith(@"#R/")); result.Text = sb.Length > 0 ? sb.ToString() : null; lineNumberSetter(lineNumber); return result; }