@@ -2,7 +2,6 @@ package ynab4
22
33import (
44 "encoding/json"
5- "errors"
65 "fmt"
76 "io"
87 "regexp"
@@ -41,16 +40,9 @@ func Parse(f io.Reader) (types.ParsedResources, error) {
4140 },
4241 }
4342
44- // Add all accounts
45- accountIDNames , err := parseAccounts (& resources , budget .Accounts )
46- if err != nil {
47- return types.ParsedResources {}, fmt .Errorf ("error parsing accounts: %w" , err )
48- }
49-
50- payeeIDNames , err := parsePayees (& resources , budget .Payees )
51- if err != nil {
52- return types.ParsedResources {}, fmt .Errorf ("error parsing payees: %w" , err )
53- }
43+ // Parse accounts and payees
44+ accountIDNames := parseAccounts (& resources , budget .Accounts )
45+ payeeIDNames := parsePayees (& resources , budget .Payees )
5446
5547 // Copy all payee mappings to the account mappings as for Envelope Zero, both are accounts
5648 maps .Copy (accountIDNames , payeeIDNames )
@@ -91,7 +83,7 @@ func parseHiddenCategoryName(f string) (category, envelope string, err error) {
9183 return
9284}
9385
94- func parseAccounts (resources * types.ParsedResources , accounts []Account ) ( IDToName , error ) {
86+ func parseAccounts (resources * types.ParsedResources , accounts []Account ) IDToName {
9587 idToNames := make (IDToName )
9688
9789 resources .Accounts = make (map [string ]types.Account )
@@ -109,10 +101,10 @@ func parseAccounts(resources *types.ParsedResources, accounts []Account) (IDToNa
109101 }
110102 }
111103
112- return idToNames , nil
104+ return idToNames
113105}
114106
115- func parsePayees (resources * types.ParsedResources , payees []Payee ) ( IDToName , error ) {
107+ func parsePayees (resources * types.ParsedResources , payees []Payee ) IDToName {
116108 idToNames := make (IDToName )
117109
118110 // Payees in YNAB 4 map to External Accounts in Envelope Zero
@@ -139,7 +131,7 @@ func parsePayees(resources *types.ParsedResources, payees []Payee) (IDToName, er
139131 }
140132 }
141133
142- return idToNames , nil
134+ return idToNames
143135}
144136
145137func parseCategories (resources * types.ParsedResources , categories []Category ) (IDToEnvelopes , error ) {
@@ -196,7 +188,7 @@ func parseCategories(resources *types.ParsedResources, categories []Category) (I
196188 var err error
197189 mapping .Category , mapping .Envelope , err = parseHiddenCategoryName (mapping .Envelope )
198190 if err != nil {
199- return IDToEnvelopes {}, fmt .Errorf ("hidden category could not be parsed: %w" , err )
191+ return IDToEnvelopes {}, fmt .Errorf ("hidden category could not be parsed, your Budget.yfull file seems to be corrupted : %w" , err )
200192 }
201193
202194 hidden = true
@@ -224,15 +216,10 @@ func parseCategories(resources *types.ParsedResources, categories []Category) (I
224216
225217 // Add all envelopes, adding categories as needed
226218 for _ , envelope := range tEnvelopes {
227- category , ok := tCategories [envelope .Category ]
228- if ! ok {
229- return IDToEnvelopes {}, errors .New ("an envelope referenced a non-existing category. Your Budget.yfull file seems to be inconsistent" )
230- }
231-
232219 // Check if the category already exists in the resources. If not, create it
233- _ , ok = resources .Categories [envelope .Category ]
220+ _ , ok : = resources .Categories [envelope .Category ]
234221 if ! ok {
235- resources .Categories [envelope .Category ] = category
222+ resources .Categories [envelope .Category ] = tCategories [ envelope . Category ]
236223 }
237224
238225 resources .Categories [envelope .Category ].Envelopes [envelope .Envelope .Model .Name ] = envelope .Envelope
@@ -389,7 +376,7 @@ func parseMonthlyBudgets(resources *types.ParsedResources, monthlyBudgets []Mont
389376 for _ , monthBudget := range monthlyBudgets {
390377 month , err := internal_types .ParseMonth (monthBudget .Month )
391378 if err != nil {
392- return fmt .Errorf ("could not parse date: %w" , err )
379+ return fmt .Errorf ("could not parse date, the Budget.yfull file seems to be corrupt : %w" , err )
393380 }
394381
395382 for _ , subCategoryBudget := range monthBudget .MonthlySubCategoryBudgets {
0 commit comments