Skip to content

Commit 04e4590

Browse files
committed
- fix more code duplication
1 parent a6c471c commit 04e4590

1 file changed

Lines changed: 20 additions & 25 deletions

File tree

src/Parsley/Parser.cs

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -68,20 +68,7 @@ public Parser(ParseOptions options)
6868
? originalLines
6969
: originalLines.Where(line => !string.IsNullOrWhiteSpace(line)).ToArray();
7070

71-
if (linesToProcess.Length == 0)
72-
return Array.Empty<T>();
73-
74-
var list = new T[linesToProcess.Length];
75-
76-
// Sequential processing to avoid potential parallel processing issues
77-
for (int i = 0; i < linesToProcess.Length; i++)
78-
{
79-
var parsed = ParseLine<T>(linesToProcess[i], i);
80-
parsed.Index = i;
81-
list[i] = parsed;
82-
}
83-
84-
return list;
71+
return ProcessLines<T>(linesToProcess, options);
8572
}
8673

8774
private string[] ReadToLines(string path)
@@ -242,6 +229,24 @@ private string[] GetDelimiterSeparatedValues(string line)
242229
}
243230
}
244231

232+
private T[] ProcessLines<T>(string[] linesToProcess, ParseOptions options) where T : IFileLine, new()
233+
{
234+
if (linesToProcess.Length == 0)
235+
return Array.Empty<T>();
236+
237+
var list = new T[linesToProcess.Length];
238+
239+
// Sequential processing to avoid potential parallel processing issues
240+
for (int i = 0; i < linesToProcess.Length; i++)
241+
{
242+
var parsed = ParseLine<T>(linesToProcess[i], i);
243+
parsed.Index = i;
244+
list[i] = parsed;
245+
}
246+
247+
return list;
248+
}
249+
245250
public T[] Parse<T>(Stream stream, Encoding encoding = null) where T : IFileLine, new()
246251
{
247252
return Parse<T>(stream, encoding, Options);
@@ -403,17 +408,7 @@ private string[] GetDelimiterSeparatedValues(string line)
403408
if (linesToProcess.Length == 0)
404409
return Array.Empty<T>();
405410

406-
var list = new T[linesToProcess.Length];
407-
408-
// Process sequentially in async context
409-
for (int i = 0; i < linesToProcess.Length; i++)
410-
{
411-
var parsed = await Task.Run(() => ParseLine<T>(linesToProcess[i], i));
412-
parsed.Index = i;
413-
list[i] = parsed;
414-
}
415-
416-
return list;
411+
return await Task.Run(() => ProcessLines<T>(linesToProcess, options));
417412
}
418413

419414
public Result<T[]> TryParse<T>(string filepath) where T : IFileLine, new()

0 commit comments

Comments
 (0)