Make some identifiers more concise

See https://go.dev/doc/effective_go#package-names, specifically:

> The importer of a package will use the name to refer to its contents,
> so exported names in the package can use that fact to avoid
> repetition.

For example, `engines.GoogleTranslateEngine` needlessly repeats
"engine," so just get rid of that duplication by renaming it to
`engines.GoogleTranslate`.

Renaming `engines.TranslationEngine` to `engines.Engine` may be
debatable, so if somebody disagrees, feel free to leave a comment
stating your disagreement and with an explanation of why you disagree.

git-svn-id: file:///srv/svn/repo/mai/trunk@10 e410bdd4-646f-c54f-a7ce-fffcc4f439ae
This commit is contained in:
fattalion
2022-09-30 20:16:23 +00:00
parent c4d051d74f
commit 41fff3c53b
5 changed files with 30 additions and 30 deletions

View File

@@ -5,7 +5,7 @@ type TranslationResult struct {
TranslatedText string TranslatedText string
} }
type TranslationEngine interface { type Engine interface {
InternalName() string InternalName() string
DisplayName() string DisplayName() string
SourceLanguages() ([]Language, error) SourceLanguages() ([]Language, error)

View File

@@ -8,13 +8,13 @@ import (
"github.com/PuerkitoBio/goquery" "github.com/PuerkitoBio/goquery"
) )
type GoogleTranslateEngine struct{} type GoogleTranslate struct{}
func (_ *GoogleTranslateEngine) InternalName() string { return "google" } func (_ *GoogleTranslate) InternalName() string { return "google" }
func (_ *GoogleTranslateEngine) DisplayName() string { return "Google" } func (_ *GoogleTranslate) DisplayName() string { return "Google" }
func (_ *GoogleTranslateEngine) getLangs(type_ string) ([]Language, error) { func (_ *GoogleTranslate) getLangs(type_ string) ([]Language, error) {
var langsType string var langsType string
switch type_ { switch type_ {
case "source": case "source":
@@ -83,19 +83,19 @@ func (_ *GoogleTranslateEngine) getLangs(type_ string) ([]Language, error) {
return langs, nil return langs, nil
} }
func (e *GoogleTranslateEngine) SourceLanguages() ([]Language, error) { func (e *GoogleTranslate) SourceLanguages() ([]Language, error) {
return e.getLangs("source") return e.getLangs("source")
} }
func (e *GoogleTranslateEngine) TargetLanguages() ([]Language, error) { func (e *GoogleTranslate) TargetLanguages() ([]Language, error) {
return e.getLangs("target") return e.getLangs("target")
} }
func (_ *GoogleTranslateEngine) SupportsAutodetect() bool { return true } func (_ *GoogleTranslate) SupportsAutodetect() bool { return true }
func (_ *GoogleTranslateEngine) DetectLanguage(text string) (Language, error) { return Language{}, nil } func (_ *GoogleTranslate) DetectLanguage(text string) (Language, error) { return Language{}, nil }
func (_ *GoogleTranslateEngine) Translate(text string, from Language, to Language) (TranslationResult, error) { func (_ *GoogleTranslate) Translate(text string, from Language, to Language) (TranslationResult, error) {
requestURL, err := url.Parse("https://translate.google.com/m") requestURL, err := url.Parse("https://translate.google.com/m")
if err != nil { if err != nil {

View File

@@ -9,12 +9,12 @@ import (
"net/url" "net/url"
) )
// ICIBAEngine is an engine that fetches data from https://www.iciba.com. // ICIBA is an engine that fetches data from https://www.iciba.com.
type ICIBAEngine struct{} type ICIBA struct{}
func (_ *ICIBAEngine) InternalName() string { return "iciba" } func (_ *ICIBA) InternalName() string { return "iciba" }
func (_ *ICIBAEngine) DisplayName() string { return "iCIBA" } func (_ *ICIBA) DisplayName() string { return "iCIBA" }
var icibaLanguages = []Language{ var icibaLanguages = []Language{
// ICIBA does have an API, but they return Chinese names. // ICIBA does have an API, but they return Chinese names.
@@ -211,13 +211,13 @@ var icibaLanguages = []Language{
{Name: "Zulu", Code: "zu"}, {Name: "Zulu", Code: "zu"},
} }
func (_ *ICIBAEngine) SourceLanguages() ([]Language, error) { return icibaLanguages, nil } func (_ *ICIBA) SourceLanguages() ([]Language, error) { return icibaLanguages, nil }
func (_ *ICIBAEngine) TargetLanguages() ([]Language, error) { return icibaLanguages, nil } func (_ *ICIBA) TargetLanguages() ([]Language, error) { return icibaLanguages, nil }
func (_ *ICIBAEngine) SupportsAutodetect() bool { return true } func (_ *ICIBA) SupportsAutodetect() bool { return true }
func (_ *ICIBAEngine) DetectLanguage(text string) (Language, error) { return Language{}, nil } func (_ *ICIBA) DetectLanguage(text string) (Language, error) { return Language{}, nil }
type icibaTranslateResponse struct { type icibaTranslateResponse struct {
Content struct { Content struct {
@@ -226,7 +226,7 @@ type icibaTranslateResponse struct {
} `json:"content"` } `json:"content"`
} }
func (_ *ICIBAEngine) Translate(text string, from Language, to Language) (TranslationResult, error) { func (_ *ICIBA) Translate(text string, from Language, to Language) (TranslationResult, error) {
requestURL, err := url.Parse("https://ifanyi.iciba.com/index.php") requestURL, err := url.Parse("https://ifanyi.iciba.com/index.php")
if err != nil { if err != nil {

View File

@@ -7,9 +7,9 @@ import (
"net/http" "net/http"
) )
// LibreTranslateEngine is an engine that interfaces with any // LibreTranslate is an engine that interfaces with any
// [LibreTranslate](https://github.com/LibreTranslate/LibreTranslate) instance. // [LibreTranslate](https://github.com/LibreTranslate/LibreTranslate) instance.
type LibreTranslateEngine struct { type LibreTranslate struct {
// InstanceURL is the URL to a LibreTranslate instance, for instance // InstanceURL is the URL to a LibreTranslate instance, for instance
// "https://libretranslate.com". // "https://libretranslate.com".
InstanceURL string InstanceURL string
@@ -23,16 +23,16 @@ type LibreTranslateEngine struct {
APIKey string APIKey string
} }
func (_ *LibreTranslateEngine) InternalName() string { return "libre" } func (_ *LibreTranslate) InternalName() string { return "libre" }
func (_ *LibreTranslateEngine) DisplayName() string { return "LibreTranslate" } func (_ *LibreTranslate) DisplayName() string { return "LibreTranslate" }
type libreLanguagesResponse []struct { type libreLanguagesResponse []struct {
Name string `json:"name"` Name string `json:"name"`
Code string `json:"code"` Code string `json:"code"`
} }
func (e *LibreTranslateEngine) getLangs() ([]Language, error) { func (e *LibreTranslate) getLangs() ([]Language, error) {
response, err := http.Get(e.InstanceURL + "/languages") response, err := http.Get(e.InstanceURL + "/languages")
if err != nil { if err != nil {
@@ -61,18 +61,18 @@ func (e *LibreTranslateEngine) getLangs() ([]Language, error) {
} }
func (e *LibreTranslateEngine) SourceLanguages() ([]Language, error) { return e.getLangs() } func (e *LibreTranslate) SourceLanguages() ([]Language, error) { return e.getLangs() }
func (e *LibreTranslateEngine) TargetLanguages() ([]Language, error) { return e.getLangs() } func (e *LibreTranslate) TargetLanguages() ([]Language, error) { return e.getLangs() }
func (_ *LibreTranslateEngine) SupportsAutodetect() bool { return true } func (_ *LibreTranslate) SupportsAutodetect() bool { return true }
type libreDetectResponse []struct { type libreDetectResponse []struct {
Confidence float64 `json:"confidence"` Confidence float64 `json:"confidence"`
LanguageCode string `json:"language"` LanguageCode string `json:"language"`
} }
func (e *LibreTranslateEngine) DetectLanguage(text string) (Language, error) { func (e *LibreTranslate) DetectLanguage(text string) (Language, error) {
formData := map[string]string{"q": text} formData := map[string]string{"q": text}
if e.APIKey != "" { if e.APIKey != "" {
@@ -130,7 +130,7 @@ type libreTranslateResponse struct {
TranslatedText string `json:"translatedText"` TranslatedText string `json:"translatedText"`
} }
func (e *LibreTranslateEngine) Translate(text string, from Language, to Language) (TranslationResult, error) { func (e *LibreTranslate) Translate(text string, from Language, to Language) (TranslationResult, error) {
formData := map[string]string{ formData := map[string]string{
"q": text, "q": text,
"source": from.Code, "source": from.Code,

View File

@@ -7,6 +7,6 @@ import (
// TODO: port web frontend to Go. // TODO: port web frontend to Go.
func main() { func main() {
engine := &engines.GoogleTranslateEngine{} engine := &engines.GoogleTranslate{}
print(engine.DisplayName()) print(engine.DisplayName())
} }