Include more translations in result list

This commit is contained in:
Kristóf Tóth 2019-10-09 21:58:25 +02:00
parent ce24100bf8
commit 3bbada4461
2 changed files with 64 additions and 13 deletions

View File

@ -5,6 +5,7 @@ import (
"os/exec" "os/exec"
"strings" "strings"
"log" "log"
"regexp"
) )
@ -35,7 +36,7 @@ func executeTransShell(tj TransJob) ([]byte, error) {
"-no-ansi", "-no-ansi",
"-show-original", "n", "-show-original", "n",
"-show-original-phonetics", "n", "-show-original-phonetics", "n",
"-show-dictionary", "n", "-show-dictionary", "y",
"-show-languages", "n", "-show-languages", "n",
"-show-prompt-message", "n", "-show-prompt-message", "n",
fmt.Sprintf("%s:%s", tj.fromLang, tj.toLang), fmt.Sprintf("%s:%s", tj.fromLang, tj.toLang),
@ -53,15 +54,16 @@ func (t Translation) Translate() []string {
} }
func parseTransOutput(out string) []string { func parseTransOutput(out string) []string {
outLines := strings.Split(out, "\n") re := regexp.MustCompile(`(?m)^\s{4}\w.*$`)
translation := outLines[0] lineMatches := re.FindAllString(out, -1)
additionalTranslations := strings.Split(outLines[len(outLines)-2], ",") results := []string{strings.Split(out, "\n")[0]}
for i, translation := range additionalTranslations { for _, line := range lineMatches {
additionalTranslations[i] = strings.TrimSpace(translation) for _, word := range strings.Split(strings.TrimSpace(line), ",") {
results = append(results, strings.TrimSpace(word))
} }
}
return append([]string{translation}, additionalTranslations...) return results
} }
func uniqueSlice(items []string) []string { func uniqueSlice(items []string) []string {

View File

@ -16,13 +16,62 @@ type testData struct {
func TestTranslation(t *testing.T) { func TestTranslation(t *testing.T) {
cases := []testData{ cases := []testData{
testData{ testData{
[]string{"actuator", "en", "hu"}, []string{"actuator", "en", "hu"},
[]byte(`működtető []byte(`működtető
noun
indítókar
actuator, starting lever
actuator actuator
működtető, beavatkozó, hajtómű, aktuátor, hajtás működtető, beavatkozó, hajtómű, aktuátor, hajtás
`), `),
[]string{"működtető", "beavatkozó", "hajtómű", "aktuátor", "hajtás"}, []string{"működtető", "indítókar", "beavatkozó", "hajtómű", "aktuátor", "hajtás"},
},
testData{
[]string{"szaxofon", "hu", "en"},
[]byte(`saxophone
szaxofon
saxophone
`),
[]string{"saxophone"},
},
testData{
[]string{"cat", "en", "hu"},
[]byte(`macska
noun
macska
cat, pussy
pletykás
cat
verb
felvon
hoist, cat
cat
macska, cica
`),
[]string{"macska", "pletykás nő", "felvon", "cica"},
},
testData{
[]string{"méltányosság", "hu", "en"},
[]byte(`equity
noun
equity
méltányosság, jogosság
fairness
méltányosság, szőkeség
justness
jogosság, méltányosság
méltányosság
equity, fairness
`),
[]string{"equity", "fairness", "justness"},
}, },
} }
@ -33,7 +82,7 @@ actuator
} }
r := j.Translate() r := j.Translate()
if (!reflect.DeepEqual(r, data.expectedResults)) { if (!reflect.DeepEqual(r, data.expectedResults)) {
t.Error() t.Errorf("\nExpected: '%v'\nActual: '%v'", data.expectedResults, r)
} }
} }
} }