using CsvHelper;
using Microsoft.Analytics.Interfaces;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;

namespace SomeNamespace
{
    public class CustomExtractor : CsvExtractor
    {
        public override IEnumerable<IRow> Extract(IUnstructuredReader input, IUpdatableRow outputrow)
        {
            string someValue = "QRS";

            using (var reader = new StreamReader(input.BaseStream))
            using (var csvReader = new CsvReader(reader))
            {
                while (csvReader.Read())
                {
                    if (csvReader.IsRecordEmpty()) continue;

                    var tokens = csvReader.CurrentRecord;

                    if (tokens[0].Contains("XYZ")) continue;

                    if (tokens[0].Contains("AB") || tokens[0].Contains("BC"))
                    {
                        someValue = tokens[0];
                        continue;
                    }

                    var someColumn = tokens[0];
                    outputrow.Set(0, someColumn);

                    yield return outputrow.AsReadOnly();
                }
            }
        }
    }
}