public void ExampleC1() { var file = GetTestFilePath.FromDirectory(CsvFiles) .AndFileName("ExampleC.csv"); var csv = Read.Csv.FromFile(file) .With.ColumnsDelimiter("\t") .ThatReturns.ArrayOf <(int Id, string PhoneNumber, string CustomEnum, string Address)>() .Put.Column(0).As <int>().Into(a => a.Id) .Put.Column(1).MakingSureThat(PhoneNumberIsValid).Into(a => a.PhoneNumber) .Put.Column(2).MakingSureThat(EnumIsValid).InThisWay(a => a.Replace("|", " and ")).Into(a => a.CustomEnum) .Put.Column(3).Into(a => a.Address) .GetAll(); Debug.WriteLine("CSV DATA"); csv.ResultSet.ForEach(a => Debug.WriteLine($"id = {a.Id}, Phone = {a.PhoneNumber}, Enum = {a.CustomEnum}, Address = {a.Address}")); Debug.WriteLine("ERRORS"); csv.Errors.ForEach(e => Debug.WriteLine($"Error at line {e.LineNumber} column index {e.ColumnZeroBasedIndex} : {e.ErrorMessage}")); Data PhoneNumberIsValid(string phone) => Regex.IsMatch(phone, "[0-9]{10}") ? Data.Valid : Data.Invalid("Phone number is invalid"); Data EnumIsValid(string @enum) => @enum.Split('|').ToList().TrueForAll(a => a == "A" || a == "B" || a == "F") ? Data.Valid : Data.Invalid("Invalid enum character"); }
public void LoadAnnuaireDebitTabacWithTuple() { var sourceFile = GetTestFilePath .FromDirectory("CsvFiles") .AndFileName("annuaire-des-debits-de-tabac.csv"); var result = Read.Csv.FromFile(sourceFile) .ThatReturns.ArrayOf <(int Id, string Enseigne, string Cp)>() .Put.Column("ID").As <int>().Into(a => a.Id) .Put.Column("ENSEIGNE").MakingSureThat(IsTabac).Into(a => a.Enseigne) .Put.Column("CODE POSTAL").Into(a => a.Cp) .GetAll(); result.Errors.Should().HaveCount(14510); result.ResultSet.Should().HaveCount(11263); var testLine = result.ResultSet.First(a => a.Id == 565); testLine.Id.Should().Be(565); testLine.Enseigne.Should().Be("Tabac"); testLine.Cp.Should().Be("03800"); Data IsTabac(string arg) => arg == "Tabac" ? Data.Valid : Data.Invalid("is not a tabac"); }
public void ExampleB() { const string input = "NAME-name#Smith-Bob#Rob\"in-Wiliam"; var csv = Read.Csv.FromString(input) .With.EndOfLineDelimiter("#") .And.ColumnsDelimiter("-") .And.Header(As.CaseSensitive) .And.SimpleParsingMode() .ThatReturns.ArrayOf <(string FirstName, string LastName)>() .Put.Column("NAME").Into(a => a.FirstName) .Put.Column("name").Into(a => a.LastName) .GetAll(); Debug.WriteLine("CSV DATA"); csv.ResultSet.ForEach(a => Debug.WriteLine($"{a.FirstName} {a.LastName}")); }
public void Sample1() { var file = GetTestFilePath.FromDirectory(CsvFiles) .AndFileName("Sample1.csv"); var csv = Read.Csv.FromFile(file) .ThatReturns.ArrayOf <(string Name, int Age)>() .Put.Column("name").Into(a => a.Name) .Put.Column("age").As <int>().Into(a => a.Age) .GetAll(); Debug.WriteLine("CSV DATA"); csv.ResultSet.ForEach(r => Debug.WriteLine($"Name : {r.Name} - Age : {r.Age}")); Debug.WriteLine("ERRORS"); csv.Errors.ForEach(e => Debug.WriteLine($"Error at line {e.LineNumber} column index {e.ColumnZeroBasedIndex} : {e.ErrorMessage}")); }