abstract terminal interface
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Terminal interface {
|
||||
Start() error
|
||||
Header(string) error
|
||||
Subheader(string) error
|
||||
Print(string) error
|
||||
End() error
|
||||
}
|
||||
|
||||
type StringBuilderTerminal struct {
|
||||
sb *strings.Builder
|
||||
}
|
||||
|
||||
func NewTerminal() Terminal {
|
||||
return &StringBuilderTerminal{
|
||||
sb: &strings.Builder{},
|
||||
}
|
||||
}
|
||||
|
||||
func (t *StringBuilderTerminal) Start() error {
|
||||
_, err := fmt.Fprint(t.sb, "\033[H")
|
||||
return err
|
||||
}
|
||||
|
||||
func (t *StringBuilderTerminal) Header(header string) error {
|
||||
_, err := fmt.Fprintf(t.sb, "=== %s ===\033[K\n", header)
|
||||
return err
|
||||
}
|
||||
|
||||
func (t *StringBuilderTerminal) Subheader(subheader string) error {
|
||||
_, err := fmt.Fprintf(t.sb, "--- %s ---\033[K\n", subheader)
|
||||
return err
|
||||
}
|
||||
|
||||
func (t *StringBuilderTerminal) Print(line string) error {
|
||||
_, err := fmt.Fprintf(t.sb, "%s\033[K\n", line)
|
||||
return err
|
||||
}
|
||||
|
||||
func (t *StringBuilderTerminal) End() error {
|
||||
fmt.Fprint(t.sb, "\033[0J")
|
||||
_, err := fmt.Print(t.sb.String())
|
||||
return err
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
package common
|
||||
|
||||
import "strings"
|
||||
|
||||
type Driver interface {
|
||||
Read() (any, error)
|
||||
Render(*strings.Builder) error
|
||||
Render(Terminal) error
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user