chore: add Apache License 2.0 and ignore build directory

This commit is contained in:
2026-07-16 17:24:50 +03:00
parent 45e4bce2a0
commit 7affa0dbc8
23 changed files with 1814 additions and 157 deletions
+54
View File
@@ -0,0 +1,54 @@
// Package terminal renders captions using terminal control sequences.
package terminal
import (
"fmt"
"io"
"tea.chunkbyte.com/kato/captioneer/src/captions"
)
type Sink struct {
writer io.Writer
previewVisible bool
}
func New(writer io.Writer) *Sink {
return &Sink{writer: writer}
}
func (s *Sink) Publish(event captions.Event) error {
switch event.Kind {
case captions.Provisional:
_, err := fmt.Fprintf(s.writer, "\r\033[2K… %s", event.Text)
if err == nil {
s.previewVisible = true
}
return err
case captions.Final:
if err := s.clearPreview(); err != nil {
return err
}
_, err := fmt.Fprintf(s.writer, "[%.2fs-%.2fs] %s\n", event.StartedAt.Seconds(), event.EndedAt.Seconds(), event.Text)
return err
case captions.Hide:
return s.clearPreview()
default:
return fmt.Errorf("unsupported caption event kind %d", event.Kind)
}
}
func (s *Sink) Close() error {
return s.clearPreview()
}
func (s *Sink) clearPreview() error {
if !s.previewVisible {
return nil
}
_, err := fmt.Fprint(s.writer, "\r\033[2K")
if err == nil {
s.previewVisible = false
}
return err
}