public IEnumerable <Transaction> GetCsvData(int year, int month, string accountName, IEnumerable <char> data, string sourceFilename, bool applyMap = false) { var account = _accountService.Get(accountName); if (account == null) { throw new ArgumentException($"{accountName} does not identify an account", nameof(accountName)); } var tokens = new CsvTokens(data); var records = new CsvRecords(tokens); Func <string, string> mapDescriptionToCategory; if (applyMap) { var map = _mapService.Get().ToDictionary(m => m.Category, m => m.Patterns.Select(p => new Regex(p)).ToList()); mapDescriptionToCategory = s => MapDescription(map, s); } else { mapDescriptionToCategory = s => null; } var transactionParser = account.GetTransactionParser(year, month, Path.GetFileName(sourceFilename), mapDescriptionToCategory); return(new CsvData <Transaction>(records, transactionParser)); }
private void VerifyTestData5Alternative(CsvRecords records) { Assert.IsTrue(records.Count == 2); Assert.AreEqual("column, one", records[0].Fields[0]); Assert.AreEqual("column \"two", records[0].Fields[1]); Assert.AreEqual("column, three", records[0].Fields[2]); Assert.AreEqual("data \"\",1", records[1].Fields[0]); Assert.AreEqual("dat\"\"\"sa, 2", records[1].Fields[1]); Assert.AreEqual("data 3", records[1].Fields[2]); }
private void VerifyTestData6Trimmed(List <string> headers, CsvRecords records) { Assert.IsTrue(headers.Count == 3); Assert.IsTrue(records.Count == 1); Assert.AreEqual("column one", headers[0]); Assert.AreEqual("column two", headers[1]); Assert.AreEqual("column three", headers[2]); Assert.AreEqual("1", records[0].Fields[0]); Assert.AreEqual("data 2", records[0].Fields[1]); Assert.AreEqual("2010-05-01 11:26:01", records[0].Fields[2]); }
private void VerifyTestData5(List <string> headers, CsvRecords records) { Assert.IsTrue(headers.Count == 3); Assert.IsTrue(records.Count == 1); Assert.AreEqual("column, one", headers[0]); Assert.AreEqual("column \"two", headers[1]); Assert.AreEqual("column, three", headers[2]); Assert.AreEqual("data \"\",1", records[0].Fields[0]); Assert.AreEqual("dat\"\"\"sa, 2", records[0].Fields[1]); Assert.AreEqual("data 3", records[0].Fields[2]); }
private void VerifyTestData6Trimmed(List<string> headers, CsvRecords records) { Assert.IsTrue(headers.Count == 3); Assert.IsTrue(records.Count == 1); Assert.AreEqual("column one", headers[0]); Assert.AreEqual("column two", headers[1]); Assert.AreEqual("column three", headers[2]); Assert.AreEqual("1", records[0].Fields[0]); Assert.AreEqual("data 2", records[0].Fields[1]); Assert.AreEqual("2010-05-01 11:26:01", records[0].Fields[2]); }
private void VerifyTestData5(List<string> headers, CsvRecords records) { Assert.IsTrue(headers.Count == 3); Assert.IsTrue(records.Count == 1); Assert.AreEqual("column, one", headers[0]); Assert.AreEqual("column \"two", headers[1]); Assert.AreEqual("column, three", headers[2]); Assert.AreEqual("data \"\",1", records[0].Fields[0]); Assert.AreEqual("dat\"\"\"sa, 2", records[0].Fields[1]); Assert.AreEqual("data 3", records[0].Fields[2]); }
/// <summary> /// Initializes a new instance of the <see cref="CsvFile"/> class. /// </summary> public CsvFile() { Headers = new List <string>(); Records = new CsvRecords(); }