Exemple #1
0
        private IEnumerable <CsvLine> LinesImpl()
        {
            Func <CsvLineBuilder, CsvBehaviour, ProcessingResult> ProcessCharacter = BeginningOfLine;
            var state = new CsvLineBuilder(_csvLayout, _behaviour);

            while (state.ReadNext(_textReader))
            {
                var result = ProcessCharacter(state, _behaviour);
                var line   = result.Line;
                if (line.HasValue)
                {
                    FieldCount = state.FieldCount;
                    yield return(line.Value);
                }
                ProcessCharacter = result.Next;
                state            = result.State;
            }

            var finalLine = state.NextField().ToLine();

            FieldCount = state.FieldCount;
            yield return(finalLine);
        }
Exemple #2
0
 public ProcessingResult(Func <CsvLineBuilder, CsvBehaviour, ProcessingResult> Next, CsvLineBuilder state, CsvLine line = null)
     : this(new Option <CsvLine>(line), Next, state) { }
Exemple #3
0
 record ProcessingResult(Option <CsvLine> Line, Func <CsvLineBuilder, CsvBehaviour, ProcessingResult> Next, CsvLineBuilder State)
 {