Skip to content

Commit

Permalink
small date parse improvement
Browse files Browse the repository at this point in the history
  • Loading branch information
howeyc committed Aug 24, 2024
1 parent 091fc58 commit 5aa0311
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions parse.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,10 @@ type parser struct {

comments []string
dateLayout string

strPrevDate string
prevDateErr error
prevDate time.Time
}

func parseLedger(filename string, ledgerReader io.Reader, callback func(t []*Transaction, err error) (stop bool)) (stop bool) {
Expand Down Expand Up @@ -174,6 +178,11 @@ func (lp *parser) skipAccount() {
}

func (lp *parser) parseDate(dateString string) (transDate time.Time, err error) {
// seen before, skip parse
if lp.strPrevDate == dateString {
return lp.prevDate, lp.prevDateErr
}

// try current date layout
transDate, err = time.Parse(lp.dateLayout, dateString)
if err != nil {
Expand All @@ -183,6 +192,12 @@ func (lp *parser) parseDate(dateString string) (transDate time.Time, err error)
err = fmt.Errorf("unable to parse date(%s): %w", dateString, err)
}
}

// maybe next date is same
lp.strPrevDate = dateString
lp.prevDate = transDate
lp.prevDateErr = err

return
}

Expand Down

0 comments on commit 5aa0311

Please sign in to comment.