Implement first POC

This commit is contained in:
Kristóf Tóth 2019-04-06 00:30:10 +02:00
commit 87320b19b8
1 changed files with 56 additions and 0 deletions

56
trans.go Normal file
View File

@ -0,0 +1,56 @@
package main
import (
"fmt"
"os"
"os/exec"
"strings"
)
func main() {
outBytes, err := execTrans(os.Args[1])
if err != nil {
panic(err)
}
translations := parseTransOutput(string(outBytes))
fmt.Println(strings.Join(uniqueSlice(translations), "\n"))
}
func execTrans(input string) ([]byte, error) {
config := []string{
"-show-original", "n",
"-show-original-phonetics", "n",
"-show-dictionary", "n",
"-show-languages", "n",
"-show-prompt-message", "n",
"hu:en",
input,
}
return exec.Command("trans", config...).Output()
}
func parseTransOutput(out string) []string {
outLines := strings.Split(out, "\n")
translation := outLines[0]
additionalTranslations := strings.Split(outLines[len(outLines)-2], ",")
for i, translation := range additionalTranslations {
additionalTranslations[i] = strings.TrimSpace(translation)
}
return append([]string{translation}, additionalTranslations...)
}
func uniqueSlice(items []string) []string {
encountered := map[string]bool{}
uniqueSlice := []string{}
for _, item := range items {
if !encountered[item] {
encountered[item] = true
uniqueSlice = append(uniqueSlice, item)
}
}
return uniqueSlice
}