diff --git a/cmd/deepl-cli/main.go b/cmd/deepl-cli/main.go index c7d7c80..9e1b6d2 100644 --- a/cmd/deepl-cli/main.go +++ b/cmd/deepl-cli/main.go @@ -23,7 +23,5 @@ func main() { flag.Parse() fmt.Printf("Translate text from %s to %s\n", sourceLang, targetLang) - if err := repl.Repl(sourceLang, targetLang); err != nil { - log.Fatal(err) - } + repl.Repl(sourceLang, targetLang) } diff --git a/internal/repl/repl.go b/internal/repl/repl.go index 15bcb4e..858c1df 100644 --- a/internal/repl/repl.go +++ b/internal/repl/repl.go @@ -3,29 +3,40 @@ package repl import ( "bufio" "fmt" - "io" "os" + "strings" "github.com/candy12t/deepl-cli/api" ) const PROMPT = ">> " -func Repl(sourceLang, targetLang string) error { +func Repl(sourceLang, targetLang string) { scanner := bufio.NewScanner(os.Stdin) for { fmt.Printf(PROMPT) if scanned := scanner.Scan(); !scanned { - return fmt.Errorf("can not scan") + return } text := scanner.Text() - tr, err := api.Translate(text, sourceLang, targetLang) - if err != nil { - return err + if validedText, err := validText(text); err != nil { + fmt.Println(err) + } else { + tr, err := api.Translate(validedText, sourceLang, targetLang) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(tr.TranslatedText()) } - out := os.Stdout - io.WriteString(out, tr.TranslatedText()) - io.WriteString(out, "\n") } } + +func validText(text string) (string, error) { + validedText := strings.TrimSpace(text) + if len(validedText) == 0 { + return "", fmt.Errorf("Error: text length is 0") + } + return validedText, nil +} diff --git a/internal/repl/repl_test.go b/internal/repl/repl_test.go new file mode 100644 index 0000000..cb4f46b --- /dev/null +++ b/internal/repl/repl_test.go @@ -0,0 +1,26 @@ +package repl + +import ( + "testing" +) + +func TestVaildText(t *testing.T) { + tests := []struct { + input string + expectedText string + }{ + {"\thello\t", "hello"}, + {" hello world ", "hello world"}, + {"\t hoge fuga \t", "hoge fuga"}, + {"\t\n", ""}, + {" ", ""}, + } + + for _, tt := range tests { + text, _ := validText(tt.input) + + if tt.expectedText != text { + t.Fatalf("validText() got=%q, expectedText=%q", text, tt.expectedText) + } + } +}