app

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 19, 2022 License: MIT Imports: 10 Imported by: 0

README

app

import "github.com/Qithub-BOT/QiiTrans/src/app"

Package app は、engines, cache, utils などのパッケージを組み合わせてアプリを構成するパッケージです.

QiiTrans の本体でもありますが、main ではアプリのインスタンスの作成と実行だけで済むことで、テストを行いやすいように別のパッケージにしています.

Index

Constants

const (
    // NameDefault は、アプリの公式名称です.
    NameDefault = "QiiTrans"

    // VersionDefault はアプリのバイナリをビルドする際にバージョン指定がない場合のアプリのバージョンです.
    VersionDefault = "dev"

    // PrefixDefault は対話モードで翻訳済みメッセージに付ける接頭辞です.
    PrefixDefault = "再翻訳:"

    // PromptDefault は対話モードで入力の待受時に表示されるプロンプトです.
    PromptDefault = ">>> "

    // StopWordDefault は対話モードで、終了扱いにするワードです.
    StopWordDefault = "q"

    // アプリのヘルプ表示用テンプレートです.
    //
    // メッセージ中の以下のタグは自動置換されます
    //
    //   "%%name_app%%" ... アプリの公式名称
    //   "%%name_cmd%%" ... 実行バイナリ名(パスと拡張子除く)
    //
    // 注意: ヘルプはスペース・インデントです。タブ・インデントでレイアウト崩れが起きないように注意してください.
    templateUsage string = `%%name_app%%
  %%name_cmd%% コマンドは文書作成支援ツールです。
  標準入力のテキストを、引数の言語から言語へ自動翻訳した結果を返します。標準入力がない場合は、対話モードになります。

Usage:
  %%name_cmd%% [Options] LangFrom LangTo [LangTo ...]

Example:
  $ # 日本語 → 英語に翻訳
  $ echo '私は、賛成の反対に同意なのだ' | %%name_cmd%% ja en
  I agree to disagree.

  $ # 日本語 → 英語 → 日本語に翻訳
  $ echo '私は、賛成の反対に同意なのだ' | %%name_cmd%% ja en ja
  同意しないことに同意します。

  $ # 日本語 → 英語 → スペイン語 → 中国語 → 日本語の順に翻訳
  $ echo '同意しないことに同意します。' | %%name_cmd%% ja en es zh ja
  同意しないことに同意します。

LangFrom:
  標準入力から受け取るテキストの言語を指定します。(翻訳元の言語)

LangTo:
  翻訳先の言語を指定します。
  LangTo は複数指定可能で、1 つ前の言語から翻訳します。

翻訳エンジンについて:
  --engine オプションで翻訳 API を指定することができます。現在は以下の翻訳 API に対応しています。

    deepl ... DeepL Pro API を使ったエンジン(デフォルトの翻訳エンジン)
              URL: https://www.deepl.com/pro?cta=menu-login-signup (Free プランでも利用可能)
              認証キー確認先: https://www.deepl.com/pro-account/plan
              API情報: https://www.deepl.com/docs-api/

注意: 利用するには、無料もしくは有料アカウントの登録とアクセストークン/認証キーの発行が必要です。

翻訳エンジンとアクセストークンの設定について:
  --apikey オプションでアクセストークン/認証キーが指定されていない場合、以下の環境変数から読み取ります。

  QIITRANS_API_KEY ... デフォルトで使うアクセストークンです。
  DEEPL_API_KEY ... DeepL 専用のアクセストークンです。セットされている場合は、QIITRANS_API_KEY より優先されます。
`
)

Variables

DebugReadBuildInfo は debug.ReadBuildInfo のコピーです。テストで挙動を変えたい 場合にモック用の関数を割り当てるために利用します。

var DebugReadBuildInfo = debug.ReadBuildInfo

ForceErrorGetUniformedInfo が true の場合、GetUniformedInfo はエラーを返します.

テスト時に強制的にエラーを返す必要がある場合のみ利用します.

var ForceErrorGetUniformedInfo = false

ForceFailRun は Run メソッドを強制的に失敗させる(1 を返す)ためのフラグです. 主にテスト目的で使われます.

var ForceFailRun bool = false

func GetMsgHelpUsage

func GetMsgHelpUsage(nameApp string, nameCmd string) string

GetMsgHelpUsage はヘルプ(使い方)のテンプレートの定数 templateUsage から、name_app と name_cmd を置換した結果を返します.

type TApp

TApp はアプリの構造体です.

type TApp struct {
    Argv     *TFlagOptions
    Engine   *engine.Properties
    Force    map[string]bool
    Name     string
    Prefix   string // 対話モード時に翻訳結果の前につける接頭辞
    Prompt   string // 対話モード時の待受プロンプト文字(デフォルト: >>>)
    StopWord string // 対話モード時に終了を伝える単語(デフォルト: q)
    Version  string
    cacheID  []string
}
func New
func New(versionApp string, cacheID ...string) *TApp
New はアプリの新規オプジェクトのポインタを返します。

第 2 引数の cacheID は、コマンド・オプションの --cache-id でも指定できるため、 通常 cacheID は指定する必要はありません。 この ID は、API から受け取った翻訳済みのテキストを保存する際に使われます。テ スト中、キャッシュがテスト間でバッティングしないようにキャッシュ ID を指定し たい場合に利用します。

func (*TApp) CliRun
func (a *TApp) CliRun(ctx *cli.Context) error

CliRun は app.Run() の本体です。cli.Run に登録して呼び出されるメソッドです.

func (*TApp) GetUniformedInfo
func (a *TApp) GetUniformedInfo() (string, error)

GetUniformedInfo は API 情報を読みやすいように整えた状態で返します.

func (*TApp) GetVersion
func (a *TApp) GetVersion() string

GetVersion メソッドはアプリ名を含めたバージョン情報を返します.

Version フィールドの値が "v" で始まらない場合は、頭に付け加えます. Version フィールドの値が、空もしくは "dev" の場合は "dev version" になります.

func (*TApp) InteractiveTranslation
func (a *TApp) InteractiveTranslation(orderLang []string) error

InteractiveTranslation は、対話式(標準入力がない場合)の連続的な翻訳を行う メソッドです。

func (*TApp) NewEngine
func (a *TApp) NewEngine(nameEngine string, cacheID ...string) (*engine.Properties, error)

NewEngine メソッドは nameEngine で指定された翻訳エンジンの新規オブジェクト・ポインタを返します.

func (*TApp) PreRun
func (a *TApp) PreRun() error

PreRun は Run の本体処理を行う前にフラグ、オプションなどの引数のセットなどを行います.

func (*TApp) PrintInfo
func (a *TApp) PrintInfo(ctx *cli.Context) error

PrintInfo は ctx に API 情報を書き込みます.

func (*TApp) Run
func (a *TApp) Run() int

Run メソッドはアプリを実行します. 実行に成功した場合は nil を、失敗した場合は error を返します.

テスト目的で強制的に失敗させる場合は ForceFail を true に設定します.

func (*TApp) SetArgValue
func (a *TApp) SetArgValue(ctx *cli.Context) error

SetArgValue は cli.Run 内で渡されるコンテキストからフラグやオプションの値をセットします.

func (*TApp) SetEngine
func (a *TApp) SetEngine(nameEngine string) (err error)

SetEngine メソッドは Engine フィールドに翻訳エンジンの新規インスタンスのポインタをセットします.

func (*TApp) SingleShotTranslation
func (a *TApp) SingleShotTranslation(orderLang []string) (string, error)

SingleShotTranslation は標準入力から受け取ったテキストを翻訳する、単発翻訳用 のメソッドです。

func (*TApp) Translate
func (a *TApp) Translate(orderLang []string, inputText string) ([]TTranslation, error)

Translate は、orderLang の順に inputText を翻訳した結果を返します.

type TFlagOptions

TFlagOptions はアプリ(コマンド)のフラグやオプションの設定やその設定値およびヘルプの表示内容を定義した構造体です. アプリの bool オプション(フラグ)や string オプションなどは、ここで定義します.

type TFlagOptions struct {
    APIKey         string `cli:"a,apikey" usage:"翻訳に使うエンジンのアクセス・トークンを指定します" dft:""`
    CacheID        string `cli:"cache-id" usage:"キャッシュの DB 名。異なる DB にキャッシュを保存したい場合に指定します" dft:""`
    NameEngine     string `cli:"e,engine" usage:"翻訳に使うエンジンを指定します" dft:"deepl"`
    UsageApp       string `cli:"-"` // アプリのヘルプ表示で使われる本文メッセージ
    ClearBeforeRun bool   `cli:"clear" usage:"実行前にキャッシュを完全に削除します。(API の利用枠を消費します)"`
    Help           bool   `cli:"h,help" usage:"ヘルプを表示します"`
    IsModeDebug    bool   `cli:"debug" usage:"デバッグ情報を標準エラー出力に出力します"`
    IsNoCache      bool   `cli:"no-cache" usage:"キャッシュを利用せずに翻訳 API から再取得します。(API の利用枠を消費します)"`
    IsPiped        bool   `cli:"-"` // パイプ渡しで値を受け取っているか
    IsVerbose      bool   `cli:"verbose" usage:"中間翻訳も出力します。"`
    ShowInfo       bool   `cli:"info" usage:"API のリクエスト可能な残数など、API 情報を出力します"`
    ShowInfoOnly   bool   `cli:"-"` // 他の引数がない場合は true になり API 情報のみの出力になります
    Version        bool   `cli:"v,version" usage:"アプリのバージョン情報を表示します"`
}
func (*TFlagOptions) AutoHelp
func (argv *TFlagOptions) AutoHelp() bool

AutoHelp は cli.AutoHelper インターフェースの実装です.

この関数は cli.Run() から呼び出され、AutoHelp() が true を返した場合は cli.Run() は argv のオプションのヘルプを表示します.

func (*TFlagOptions) SetHelpMsg
func (argv *TFlagOptions) SetHelpMsg()

SetHelpMsg はヘルプのテンプレートに現在のアプリ名及び実行ファイル名を流し込みセットします.

func (*TFlagOptions) Validate
func (argv *TFlagOptions) Validate(ctx *cli.Context) error

Validate メソッドは、cli.Validator インターフェースの実装です.

コマンドのフラグ、オプションや引数のバリデーションを行います。 cli.Run() で指定された関数が実行される前に呼び出されます.

type TTranslation

TTranslation は翻訳結果を保持するオブジェクトを定義します。

type TTranslation struct {
    LangFrom   string
    LangTo     string
    Original   string
    Translated string
}
func NewTranslation
func NewTranslation(langFrom, langTo, originalInput string) TTranslation

NewTranslation returns an initialized TTranslation object.


Generated by gomarkdoc

Documentation

Overview

Package app は、engines, cache, utils などのパッケージを組み合わせてアプリを構成するパッケージです.

QiiTrans の本体でもありますが、main ではアプリのインスタンスの作成と実行だけで済むことで、テストを行いやすいように別のパッケージにしています.

Index

Constants

View Source
const (
	// NameDefault は、アプリの公式名称です.
	NameDefault = "QiiTrans"

	// VersionDefault はアプリのバイナリをビルドする際にバージョン指定がない場合のアプリのバージョンです.
	VersionDefault = "dev"

	// PrefixDefault は対話モードで翻訳済みメッセージに付ける接頭辞です.
	PrefixDefault = "再翻訳:"

	// PromptDefault は対話モードで入力の待受時に表示されるプロンプトです.
	PromptDefault = ">>> "

	// StopWordDefault は対話モードで、終了扱いにするワードです.
	StopWordDefault = "q"
)

Variables

View Source
var DebugReadBuildInfo = debug.ReadBuildInfo

DebugReadBuildInfo は debug.ReadBuildInfo のコピーです。テストで挙動を変えたい 場合にモック用の関数を割り当てるために利用します。

View Source
var ForceErrorGetUniformedInfo = false

ForceErrorGetUniformedInfo が true の場合、GetUniformedInfo はエラーを返します.

テスト時に強制的にエラーを返す必要がある場合のみ利用します.

View Source
var ForceFailRun bool = false

ForceFailRun は Run メソッドを強制的に失敗させる(1 を返す)ためのフラグです. 主にテスト目的で使われます.

Functions

func GetMsgHelpUsage

func GetMsgHelpUsage(nameApp string, nameCmd string) string

GetMsgHelpUsage はヘルプ(使い方)のテンプレートの定数 templateUsage から、name_app と name_cmd を置換した結果を返します.

Types

type TApp

type TApp struct {
	Argv     *TFlagOptions
	Engine   *engine.Properties
	Force    map[string]bool
	Name     string
	Prefix   string // 対話モード時に翻訳結果の前につける接頭辞
	Prompt   string // 対話モード時の待受プロンプト文字(デフォルト: >>>)
	StopWord string // 対話モード時に終了を伝える単語(デフォルト: q)
	Version  string
	// contains filtered or unexported fields
}

TApp はアプリの構造体です.

func New

func New(versionApp string, cacheID ...string) *TApp

New はアプリの新規オプジェクトのポインタを返します。

第 2 引数の cacheID は、コマンド・オプションの --cache-id でも指定できるため、 通常 cacheID は指定する必要はありません。 この ID は、API から受け取った翻訳済みのテキストを保存する際に使われます。テ スト中、キャッシュがテスト間でバッティングしないようにキャッシュ ID を指定し たい場合に利用します。

func (*TApp) CliRun

func (a *TApp) CliRun(ctx *cli.Context) error

CliRun は app.Run() の本体です。cli.Run に登録して呼び出されるメソッドです.

func (*TApp) GetUniformedInfo

func (a *TApp) GetUniformedInfo() (string, error)

GetUniformedInfo は API 情報を読みやすいように整えた状態で返します.

func (*TApp) GetVersion

func (a *TApp) GetVersion() string

GetVersion メソッドはアプリ名を含めたバージョン情報を返します.

Version フィールドの値が "v" で始まらない場合は、頭に付け加えます. Version フィールドの値が、空もしくは "dev" の場合は "dev version" になります.

func (*TApp) InteractiveTranslation

func (a *TApp) InteractiveTranslation(orderLang []string) error

InteractiveTranslation は、対話式(標準入力がない場合)の連続的な翻訳を行う メソッドです。

func (*TApp) NewEngine

func (a *TApp) NewEngine(nameEngine string, cacheID ...string) (*engine.Properties, error)

NewEngine メソッドは nameEngine で指定された翻訳エンジンの新規オブジェクト・ポインタを返します.

func (*TApp) PreRun

func (a *TApp) PreRun() error

PreRun は Run の本体処理を行う前にフラグ、オプションなどの引数のセットなどを行います.

func (*TApp) PrintInfo

func (a *TApp) PrintInfo(ctx *cli.Context) error

PrintInfo は ctx に API 情報を書き込みます.

func (*TApp) Run

func (a *TApp) Run() int

Run メソッドはアプリを実行します. 実行に成功した場合は nil を、失敗した場合は error を返します.

テスト目的で強制的に失敗させる場合は ForceFail を true に設定します.

func (*TApp) SetArgValue

func (a *TApp) SetArgValue(ctx *cli.Context) error

SetArgValue は cli.Run 内で渡されるコンテキストからフラグやオプションの値をセットします.

func (*TApp) SetEngine

func (a *TApp) SetEngine(nameEngine string) (err error)

SetEngine メソッドは Engine フィールドに翻訳エンジンの新規インスタンスのポインタをセットします.

func (*TApp) SingleShotTranslation

func (a *TApp) SingleShotTranslation(orderLang []string) (string, error)

SingleShotTranslation は標準入力から受け取ったテキストを翻訳する、単発翻訳用 のメソッドです。

func (*TApp) Translate

func (a *TApp) Translate(orderLang []string, inputText string) ([]TTranslation, error)

Translate は、orderLang の順に inputText を翻訳した結果を返します.

type TFlagOptions

type TFlagOptions struct {
	APIKey         string `cli:"a,apikey" usage:"翻訳に使うエンジンのアクセス・トークンを指定します" dft:""`
	CacheID        string `` /* 131-byte string literal not displayed */
	NameEngine     string `cli:"e,engine" usage:"翻訳に使うエンジンを指定します" dft:"deepl"`
	UsageApp       string `cli:"-"` // アプリのヘルプ表示で使われる本文メッセージ
	ClearBeforeRun bool   `cli:"clear" usage:"実行前にキャッシュを完全に削除します。(API の利用枠を消費します)"`
	Help           bool   `cli:"h,help" usage:"ヘルプを表示します"`
	IsModeDebug    bool   `cli:"debug" usage:"デバッグ情報を標準エラー出力に出力します"`
	IsNoCache      bool   ``        /* 134-byte string literal not displayed */
	IsPiped        bool   `cli:"-"` // パイプ渡しで値を受け取っているか
	IsVerbose      bool   `cli:"verbose" usage:"中間翻訳も出力します。"`
	ShowInfo       bool   `cli:"info" usage:"API のリクエスト可能な残数など、API 情報を出力します"`
	ShowInfoOnly   bool   `cli:"-"` // 他の引数がない場合は true になり API 情報のみの出力になります
	Version        bool   `cli:"v,version" usage:"アプリのバージョン情報を表示します"`
}

TFlagOptions はアプリ(コマンド)のフラグやオプションの設定やその設定値およびヘルプの表示内容を定義した構造体です. アプリの bool オプション(フラグ)や string オプションなどは、ここで定義します.

func (*TFlagOptions) AutoHelp

func (argv *TFlagOptions) AutoHelp() bool

AutoHelp は cli.AutoHelper インターフェースの実装です.

この関数は cli.Run() から呼び出され、AutoHelp() が true を返した場合は cli.Run() は argv のオプションのヘルプを表示します.

func (*TFlagOptions) SetHelpMsg

func (argv *TFlagOptions) SetHelpMsg()

SetHelpMsg はヘルプのテンプレートに現在のアプリ名及び実行ファイル名を流し込みセットします.

func (*TFlagOptions) Validate

func (argv *TFlagOptions) Validate(ctx *cli.Context) error

Validate メソッドは、cli.Validator インターフェースの実装です.

コマンドのフラグ、オプションや引数のバリデーションを行います。 cli.Run() で指定された関数が実行される前に呼び出されます.

type TTranslation

type TTranslation struct {
	LangFrom   string
	LangTo     string
	Original   string
	Translated string
}

TTranslation は翻訳結果を保持するオブジェクトを定義します。

func NewTranslation

func NewTranslation(langFrom, langTo, originalInput string) TTranslation

NewTranslation returns an initialized TTranslation object.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL