From 9f3f3dc08fbdce568cf4cfddd06faa3cddd44f2b Mon Sep 17 00:00:00 2001 From: bel Date: Fri, 3 Apr 2020 00:18:39 +0000 Subject: [PATCH] Split task format from internal storage --- .gitignore | 0 bank.go | 0 config.go | 0 main.go | 0 scrape.go | 0 transaction.go | 22 ++++++++++++++++++++++ transaction_test.go | 9 +++++++++ upload.go | 2 +- 8 files changed, 32 insertions(+), 1 deletion(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 bank.go mode change 100644 => 100755 config.go mode change 100644 => 100755 main.go mode change 100644 => 100755 scrape.go mode change 100644 => 100755 transaction.go create mode 100644 transaction_test.go mode change 100644 => 100755 upload.go diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/bank.go b/bank.go old mode 100644 new mode 100755 diff --git a/config.go b/config.go old mode 100644 new mode 100755 diff --git a/main.go b/main.go old mode 100644 new mode 100755 diff --git a/scrape.go b/scrape.go old mode 100644 new mode 100755 diff --git a/transaction.go b/transaction.go old mode 100644 new mode 100755 index 9eb7655..17c6ec8 --- a/transaction.go +++ b/transaction.go @@ -3,6 +3,9 @@ package main import ( "crypto/md5" "fmt" + "log" + "regexp" + "time" ) type Transaction struct { @@ -13,6 +16,10 @@ type Transaction struct { Date string } +func (t *Transaction) Format() string { + return fmt.Sprintf("(%s) %v: %s @ %s", cleanDate(t.Date), t.Bank, t.Amount, t.Account) +} + func (t *Transaction) String() string { return fmt.Sprint(*t) } @@ -27,3 +34,18 @@ func NewTransaction(amount, account, date string, bank Bank) *Transaction { t.ID = fmt.Sprintf("%x", md5.Sum([]byte(fmt.Sprint(t)))) return t } + +func cleanDate(date string) string { + regexp := regexp.MustCompile(`[A-Z][a-z]{2}, [0-9][0-9]? [A-Z][a-z]{2} 2[0-9]{3}`) + matches := regexp.FindAllString(date, -1) + if len(matches) < 1 { + return date + } + date = matches[0] + time, err := time.Parse(`Mon, 2 Jan 2006`, date) + if err != nil { + log.Println(err) + return date + } + return time.Format("Mon Jan 2") +} diff --git a/transaction_test.go b/transaction_test.go new file mode 100644 index 0000000..7aab8b6 --- /dev/null +++ b/transaction_test.go @@ -0,0 +1,9 @@ +package main + +import "testing" + +func TestTransactionFormat(t *testing.T) { + x := NewTransaction("12.34", "Amazon", "[Wed, 1 Apr 2020 10:14:11 -0400 (EDT)]", Chase) + t.Logf("%s", x.String()) + t.Logf("%s", x.Format()) +} diff --git a/upload.go b/upload.go old mode 100644 new mode 100755 index adecde5..9a8b164 --- a/upload.go +++ b/upload.go @@ -12,7 +12,7 @@ import ( func Upload(config Config, transaction *Transaction) error { params := url.Values{ "list": {config.TodoList}, - "title": {fmt.Sprintf("%v: %s @ %s @ %s", transaction.Bank, transaction.Amount, transaction.Account, transaction.Date)}, + "title": {transaction.Format()}, "tag": {config.TodoTag}, } req, err := http.NewRequest("POST", config.TodoAddr+"/ajax.php?newTask", strings.NewReader(params.Encode()))