From 84121b3bb4820945eeec3ad6084f24c37b015683 Mon Sep 17 00:00:00 2001 From: Thibaut Horel Date: Fri, 21 Jun 2019 13:16:47 -0400 Subject: Improving parser by factoring out a scanner --- database.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'database.go') diff --git a/database.go b/database.go index 945f9eb..ddb9340 100644 --- a/database.go +++ b/database.go @@ -115,12 +115,12 @@ func (e Entry) Marshal() string { } type Database struct { - SNames []string `json:"-"` - Strings map[string]Value `json:"strings,omitempty"` - Entries map[string]Entry `json:"entries"` - Preamble Value `json:"preamble,omitempty"` - EKeys []string `json:"-"` - CrossRefs map[string]int `json:"crossrefs,omitempty"` + SNames []string `json:"-"` + Strings map[string]Value `json:"strings,omitempty"` + Entries map[string]*Entry `json:"entries"` + Preamble Value `json:"preamble,omitempty"` + EKeys []string `json:"-"` + CrossRefs map[string]int `json:"crossrefs,omitempty"` } func (d *Database) UnTex() { @@ -158,14 +158,16 @@ func (d *Database) SplitNames() { func (d *Database) Resolve() { var key string - var ref Entry for _, entry := range d.Entries { for field, value := range entry.Fields { if field != "crossref" { continue } key = strings.ToLower(value.String()) - ref = d.Entries[key] + ref, in := d.Entries[key] + if !in { + continue + } for f, v := range ref.Fields { if _, in := entry.Fields[f]; !in { entry.Fields[f] = v -- cgit v1.2.3-70-g09d2