Skip to content

Commit 5aa0311

Browse files
committed
small date parse improvement
1 parent 091fc58 commit 5aa0311

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

parse.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ type parser struct {
8585

8686
comments []string
8787
dateLayout string
88+
89+
strPrevDate string
90+
prevDateErr error
91+
prevDate time.Time
8892
}
8993

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

176180
func (lp *parser) parseDate(dateString string) (transDate time.Time, err error) {
181+
// seen before, skip parse
182+
if lp.strPrevDate == dateString {
183+
return lp.prevDate, lp.prevDateErr
184+
}
185+
177186
// try current date layout
178187
transDate, err = time.Parse(lp.dateLayout, dateString)
179188
if err != nil {
@@ -183,6 +192,12 @@ func (lp *parser) parseDate(dateString string) (transDate time.Time, err error)
183192
err = fmt.Errorf("unable to parse date(%s): %w", dateString, err)
184193
}
185194
}
195+
196+
// maybe next date is same
197+
lp.strPrevDate = dateString
198+
lp.prevDate = transDate
199+
lp.prevDateErr = err
200+
186201
return
187202
}
188203

0 commit comments

Comments
 (0)