From a4232884c5bd8ab3e189f38f287eccf8d7b62295 Mon Sep 17 00:00:00 2001 From: Boming Zhang Date: Sat, 24 May 2025 04:18:16 -0400 Subject: [PATCH] refactor(parser/elf): modern structure --- internal/{parsers => parser}/elf/meta.go | 7 +++++++ internal/{parsers => parser}/elf/model.go | 0 internal/{parsers => parser}/elf/parser.go | 12 ++---------- 3 files changed, 9 insertions(+), 10 deletions(-) rename internal/{parsers => parser}/elf/meta.go (67%) rename internal/{parsers => parser}/elf/model.go (100%) rename internal/{parsers => parser}/elf/parser.go (92%) diff --git a/internal/parsers/elf/meta.go b/internal/parser/elf/meta.go similarity index 67% rename from internal/parsers/elf/meta.go rename to internal/parser/elf/meta.go index d952f2b..ed52fc7 100644 --- a/internal/parsers/elf/meta.go +++ b/internal/parser/elf/meta.go @@ -4,6 +4,13 @@ import "github.com/joint-online-judge/JOJ3/internal/stage" var name = "elf" +type Conf struct { + Score int + Comment string +} + +type Elf struct{} + func init() { stage.RegisterParser(name, &Elf{}) } diff --git a/internal/parsers/elf/model.go b/internal/parser/elf/model.go similarity index 100% rename from internal/parsers/elf/model.go rename to internal/parser/elf/model.go diff --git a/internal/parsers/elf/parser.go b/internal/parser/elf/parser.go similarity index 92% rename from internal/parsers/elf/parser.go rename to internal/parser/elf/parser.go index db5477a..a876700 100644 --- a/internal/parsers/elf/parser.go +++ b/internal/parser/elf/parser.go @@ -5,22 +5,14 @@ import ( "fmt" "log/slog" - "github.com/criyle/go-judge/envexec" "github.com/joint-online-judge/JOJ3/internal/stage" "github.com/mitchellh/mapstructure" ) -type Conf struct { - Score int - Comment string -} - -type Elf struct{} - func Parse(executorResult stage.ExecutorResult, conf Conf) stage.ParserResult { stdout := executorResult.Files["stdout"] stderr := executorResult.Files["stderr"] - if executorResult.Status != stage.Status(envexec.StatusAccepted) { + if executorResult.Status != stage.StatusAccepted { return stage.ParserResult{ Score: 0, Comment: fmt.Sprintf( @@ -88,7 +80,7 @@ func (*Elf) Run(results []stage.ExecutorResult, confAny any) ( if err != nil { return nil, true, err } - var res []stage.ParserResult + res := make([]stage.ParserResult, 0, len(results)) for _, result := range results { res = append(res, Parse(result, *conf)) }