public List <Field> ReadFields(ILineRetriever lineRetriever) { var fieldData = new List <List <CellType> >(); var fields = CreateInitialFields(lineRetriever, fieldData); PopulateFields(fields, fieldData); return(fields); }
private List <Field> CreateInitialFields(ILineRetriever lineRetriever, ICollection <List <CellType> > fieldData) { var allFields = new List <Field>(); while (true) { var line = lineRetriever.GetNextLine(); if (int.TryParse(line, out _)) { var(row, col) = LineParser.GetSize(line); if (row == 0 || col == 0) { break; } allFields.Add(new Field(row, col)); } else { fieldData.Add(LineParser.GetFieldRow(line)); } } return(allFields); }