83 lines
2.2 KiB
Go
83 lines
2.2 KiB
Go
package builtin
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"gitea.maximumdirect.net/eric/seriatim/internal/autocorrect"
|
|
"gitea.maximumdirect.net/eric/seriatim/internal/config"
|
|
"gitea.maximumdirect.net/eric/seriatim/internal/model"
|
|
"gitea.maximumdirect.net/eric/seriatim/internal/report"
|
|
)
|
|
|
|
type noopPostprocessor struct {
|
|
name string
|
|
}
|
|
|
|
func (p noopPostprocessor) Name() string {
|
|
return p.name
|
|
}
|
|
|
|
func (p noopPostprocessor) Process(ctx context.Context, in model.MergedTranscript, cfg config.Config) (model.MergedTranscript, []report.Event, error) {
|
|
if err := ctx.Err(); err != nil {
|
|
return model.MergedTranscript{}, nil, err
|
|
}
|
|
|
|
return in, []report.Event{
|
|
report.Info("postprocessing", p.name, "completed no-op postprocessing module"),
|
|
}, nil
|
|
}
|
|
|
|
type assignIDs struct{}
|
|
|
|
func (assignIDs) Name() string {
|
|
return "assign-ids"
|
|
}
|
|
|
|
func (assignIDs) Process(ctx context.Context, in model.MergedTranscript, cfg config.Config) (model.MergedTranscript, []report.Event, error) {
|
|
if err := ctx.Err(); err != nil {
|
|
return model.MergedTranscript{}, nil, err
|
|
}
|
|
|
|
for index := range in.Segments {
|
|
in.Segments[index].ID = index + 1
|
|
}
|
|
|
|
return in, []report.Event{
|
|
report.Info("postprocessing", "assign-ids", "assigned final segment IDs"),
|
|
}, nil
|
|
}
|
|
|
|
type autocorrectPostprocessor struct{}
|
|
|
|
func (autocorrectPostprocessor) Name() string {
|
|
return "autocorrect"
|
|
}
|
|
|
|
func (autocorrectPostprocessor) Process(ctx context.Context, in model.MergedTranscript, cfg config.Config) (model.MergedTranscript, []report.Event, error) {
|
|
if err := ctx.Err(); err != nil {
|
|
return model.MergedTranscript{}, nil, err
|
|
}
|
|
if cfg.AutocorrectFile == "" {
|
|
return in, []report.Event{
|
|
report.Info("postprocessing", "autocorrect", "skipped autocorrect because no autocorrect file was supplied"),
|
|
}, nil
|
|
}
|
|
|
|
rules, err := autocorrect.Load(cfg.AutocorrectFile)
|
|
if err != nil {
|
|
return model.MergedTranscript{}, nil, err
|
|
}
|
|
|
|
replacements := 0
|
|
for index := range in.Segments {
|
|
var count int
|
|
in.Segments[index].Text, count = rules.Apply(in.Segments[index].Text)
|
|
replacements += count
|
|
}
|
|
|
|
return in, []report.Event{
|
|
report.Info("postprocessing", "autocorrect", fmt.Sprintf("applied %d autocorrect replacement(s)", replacements)),
|
|
}, nil
|
|
}
|