Files

40 lines
1.0 KiB
Go
Raw Permalink Normal View History

2026-04-26 13:03:07 -05:00
package builtin
import (
"context"
"fmt"
2026-04-26 13:03:07 -05:00
"sort"
"gitea.maximumdirect.net/eric/seriatim/internal/config"
"gitea.maximumdirect.net/eric/seriatim/internal/model"
"gitea.maximumdirect.net/eric/seriatim/internal/report"
)
type chronologicalMerger struct{}
2026-04-26 13:03:07 -05:00
func (chronologicalMerger) Name() string {
return "chronological-merge"
2026-04-26 13:03:07 -05:00
}
func (chronologicalMerger) Merge(ctx context.Context, in []model.CanonicalTranscript, cfg config.Config) (model.MergedTranscript, []report.Event, error) {
2026-04-26 13:03:07 -05:00
if err := ctx.Err(); err != nil {
return model.MergedTranscript{}, nil, err
}
segments := make([]model.Segment, 0)
for _, transcript := range in {
segments = append(segments, transcript.Segments...)
}
sort.SliceStable(segments, func(i, j int) bool {
return model.SegmentLess(segments[i], segments[j])
2026-04-26 13:03:07 -05:00
})
return model.MergedTranscript{
Segments: segments,
OverlapGroups: nil,
}, []report.Event{
report.Info("merge", "chronological-merge", fmt.Sprintf("merged %d canonical transcript(s) into %d segment(s)", len(in), len(segments))),
2026-04-26 13:03:07 -05:00
}, nil
}