From 6e1e4bab88a1f1662881b1d0f9edd42c2b585788 Mon Sep 17 00:00:00 2001 From: visualfc Date: Wed, 21 Jun 2023 21:21:44 +0800 Subject: [PATCH] modfile: Project.Works --- gopmod/classfile.go | 11 +++-------- modfile/gop_test.go | 32 ++++++++++++++++---------------- modfile/rule.go | 4 ++-- 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/gopmod/classfile.go b/gopmod/classfile.go index 7650c3d..e2b5c56 100644 --- a/gopmod/classfile.go +++ b/gopmod/classfile.go @@ -28,12 +28,7 @@ import ( ) type Class = modfile.Class - -type Project struct { - Ext, Class string // NOTE: allow Ext/Class empty if there is no ProjectClass. - Works []*Class - PkgPaths []string -} +type Project = modfile.Project var ( SpxProject = &Project{ @@ -70,7 +65,7 @@ func (p *Module) RegisterClasses(registerClass ...func(c *Project)) (err error) } p.registerClass(SpxProject, regcls) if c := p.Project; c != nil { - p.registerClass(&Project{Ext: c.Ext, Class: c.Class, Works: p.Classes, PkgPaths: c.PkgPaths}, regcls) + p.registerClass(c, regcls) } for _, r := range p.Register { if err = p.registerMod(r.ClassfileMod, regcls); err != nil { @@ -109,7 +104,7 @@ func (p *Module) registerClassFrom(modVer module.Version, regcls func(c *Project if c == nil { return ErrNotClassFileMod } - p.registerClass(&Project{Ext: c.Ext, Class: c.Class, Works: mod.Classes, PkgPaths: c.PkgPaths}, regcls) + p.registerClass(c, regcls) return } diff --git a/modfile/gop_test.go b/modfile/gop_test.go index 53acaa6..444c915 100644 --- a/modfile/gop_test.go +++ b/modfile/gop_test.go @@ -113,20 +113,20 @@ func TestParse1(t *testing.T) { t.Errorf("project path expected be math, but %s got", f.Project.PkgPaths[1]) } - if len(f.Classes) != 2 { - t.Errorf("project workclass length expected be 2, but %d got", len(f.Classes)) + if len(f.Project.Works) != 2 { + t.Errorf("project workclass length expected be 2, but %d got", len(f.Project.Works)) } - if f.Classes[0].Ext != ".spx" { - t.Errorf("project class[0] exts expected be .spx, but %s got", f.Classes[0].Ext) + if f.Project.Works[0].Ext != ".spx" { + t.Errorf("project class[0] exts expected be .spx, but %s got", f.Project.Works[0].Ext) } - if f.Classes[0].Class != "Sprite" { - t.Errorf("project class[0] class expected be Sprite, but %s got", f.Classes[0].Class) + if f.Project.Works[0].Class != "Sprite" { + t.Errorf("project class[0] class expected be Sprite, but %s got", f.Project.Works[0].Class) } - if f.Classes[1].Ext != ".spx2" { - t.Errorf("project class[1] exts expected be .spx2, but %s got", f.Classes[1].Ext) + if f.Project.Works[1].Ext != ".spx2" { + t.Errorf("project class[1] exts expected be .spx2, but %s got", f.Project.Works[1].Ext) } - if f.Classes[1].Class != "*Sprite2" { - t.Errorf("project class[1] class expected be Sprite, but %s got", f.Classes[1].Class) + if f.Project.Works[1].Class != "*Sprite2" { + t.Errorf("project class[1] class expected be Sprite, but %s got", f.Project.Works[1].Class) } } @@ -201,14 +201,14 @@ func TestParse2(t *testing.T) { t.Errorf("project path expected be math, but %s got", f.Project.PkgPaths[1]) } - if len(f.Classes) != 1 { - t.Errorf("project workclass length expected be 2, but %d got", len(f.Classes)) + if len(f.Project.Works) != 1 { + t.Errorf("project workclass length expected be 2, but %d got", len(f.Project.Works)) } - if f.Classes[0].Ext != ".spx" { - t.Errorf("project class[0] exts expected be .spx, but %s got", f.Classes[0].Ext) + if f.Project.Works[0].Ext != ".spx" { + t.Errorf("project class[0] exts expected be .spx, but %s got", f.Project.Works[0].Ext) } - if f.Classes[0].Class != "Sprite" { - t.Errorf("project class[0] class expected be Sprite, but %s got", f.Classes[0].Class) + if f.Project.Works[0].Class != "Sprite" { + t.Errorf("project class[0] class expected be Sprite, but %s got", f.Project.Works[0].Class) } } diff --git a/modfile/rule.go b/modfile/rule.go index 70c9a68..3186341 100644 --- a/modfile/rule.go +++ b/modfile/rule.go @@ -34,7 +34,6 @@ type File struct { modfile.File Gop *Gop Project *Project - Classes []*Class Register []*Register } @@ -69,6 +68,7 @@ type Register struct { type Project struct { Ext string // ".gmx" Class string // "Game" + Works []*Class // work class of classfile PkgPaths []string // package paths of classfile Syntax *Line } @@ -325,7 +325,7 @@ func (f *File) parseVerb(errs *ErrorList, verb string, line *Line, args []string wrapError(err) return } - f.Classes = append(f.Classes, &Class{ + f.Project.Works = append(f.Project.Works, &Class{ Ext: workExt, Class: class, Syntax: line,