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));
        }
示例#2
0
 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]);
 }
示例#3
0
 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]);
 }
示例#4
0
 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]);
 }
示例#5
0
 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]);
 }
示例#6
0
 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]);
 }
示例#7
0
 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]);
 }
示例#8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CsvFile"/> class.
 /// </summary>
 public CsvFile()
 {
     Headers = new List <string>();
     Records = new CsvRecords();
 }