ted/main.go
Leon Mika 975955236f Added support for TSV files
This uses a similar parser as CSV files, except configured for tabs.
Have also fixed the configured parser to ignore column counts.
2022-06-03 10:29:06 +10:00

50 lines
1.1 KiB
Go

package main
import (
"flag"
"fmt"
"github.com/lmika/ted/ui"
"os"
)
func main() {
var flagCodec = flag.String("c", "csv", "file codec to use")
flag.Parse()
if flag.NArg() == 0 {
fmt.Fprintln(os.Stderr, "usage: ted FILENAME")
os.Exit(1)
}
uiManager, err := ui.NewUI()
if err != nil {
panic(err)
}
defer uiManager.Close()
codecBuilder, hasCodec := codecModelSourceBuilders[*flagCodec]
if !hasCodec {
fmt.Fprintf(os.Stderr, "unrecognised codec: %v", *flagCodec)
os.Exit(1)
}
frame := NewFrame(uiManager)
session := NewSession(uiManager, frame, codecBuilder(flag.Arg(0)))
session.LoadFromSource()
uiManager.SetRootComponent(frame.RootComponent())
frame.enterMode(GridMode)
uiManager.Loop()
}
type codecModelSourceBuilder func(filename string) ModelSource
var codecModelSourceBuilders = map[string]codecModelSourceBuilder{
"csv": func(filename string) ModelSource {
return NewCsvFileModelSource(filename, CsvFileModelSourceOptions{Comma: ','})
},
"tsv": func(filename string) ModelSource {
return NewCsvFileModelSource(filename, CsvFileModelSourceOptions{Comma: '\t'})
},
}