TTTrans 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb740e31cd3cfe831039fc5feebf5eb11e0030563a99b539126506b3d5534532
4
- data.tar.gz: f89ff2acfdf21034d5ae8f5bd8bc1bec1399813b0f72c74cc0b3634183726668
3
+ metadata.gz: 6cfc01f6f5ff99adbbf7ad65bed86b5a2b302ada76cf255e5a1da27f8a15c155
4
+ data.tar.gz: 338a89ff03331d4ad7175f61386f27f643457669179e269ccde4e02f4b41cf93
5
5
  SHA512:
6
- metadata.gz: 489e8bcedf7eeeca73ac5fab3c248e815c86e712e4e71bfcd3b17fb4c7f2b86bf7af4f29a6c5daf1caf7e9bd8dee4e9d1cb387b038b77722ea98072392a1c83c
7
- data.tar.gz: 870febae3298d27a50bdb4654ebfce90d30a42273ec6d53ae84a6d96783959c83f27f9bdcaa85b936363fe8d35a316da4b08071ed04f3e2de36b2c21aa0343ed
6
+ metadata.gz: 88e46f4f37c7ace508592bfa35cfcf885e5092284693ac507046c394f7ea9e69fc7f7ddad05b8f522e89b124d51d15be400f6e7815c7c66226ce8b84ca28b2c2
7
+ data.tar.gz: f0f7d8833a14fa3a3bab622a2db8449368ca2210b71cfa08972c417595f5d87379c7d8973f186a32ca92ec221cbdaf11819f215ca4e613ac116a1228dd0956ba
data/.rubocop.yml CHANGED
@@ -11,3 +11,6 @@ Style/StringLiteralsInInterpolation:
11
11
 
12
12
  Layout/LineLength:
13
13
  Max: 120
14
+
15
+ Metrics/MethodLength:
16
+ Max: 80
data/Gemfile.lock CHANGED
@@ -2,12 +2,14 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  TTTrans (0.1.0)
5
+ inifile (~> 3.0.0)
5
6
  oauth (~> 0.5.10)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
10
11
  ast (2.4.2)
12
+ inifile (3.0.0)
11
13
  oauth (0.5.10)
12
14
  parallel (1.22.1)
13
15
  parser (3.1.2.0)
data/README.md CHANGED
@@ -1,4 +1,7 @@
1
1
  # TTTrans
2
+ [![Ruby](https://github.com/Himeyama/tttrans/actions/workflows/main.yml/badge.svg)](https://github.com/Himeyama/tttrans/actions/workflows/main.yml)
3
+ [![Gem Version](https://badge.fury.io/rb/TTTrans.svg)](https://badge.fury.io/rb/TTTrans)
4
+
2
5
  この Gem は「みんなの自動翻訳@TexTra®」に対し WebAPI を叩き、翻訳するアプリです。
3
6
 
4
7
  ![image](https://user-images.githubusercontent.com/39254183/175293482-2e432b0b-f52e-457c-bad1-e6e68d627fe1.png)
@@ -6,37 +9,36 @@
6
9
  |機能|開発状況|
7
10
  |:--:|:--:|
8
11
  |英日翻訳|✅|
9
- |日英翻訳||
10
- |設定ファイルの読み込み||
12
+ |日英翻訳|✅|
13
+ |設定ファイルの読み込み|✅|
11
14
  |非対話モードによる翻訳||
12
15
 
13
16
  ## インストール
14
- アプリケーションのGemfileに次の行を追加します:
17
+ 次のようにインストールします:
18
+
19
+ $ gem install TTTrans
20
+
21
+ アプリケーションの Gemfile に次の行を追加します (アプリケーションに追加しない場合は無視してください):
15
22
 
16
23
  ```ruby
17
- gem 'tttrans'
24
+ gem 'TTTrans'
18
25
  ```
19
26
 
20
- 次のコマンドを実行します:
27
+ 次のコマンドを実行します (アプリケーションに追加しない場合は無視してください):
21
28
 
22
29
  $ bundle install
23
30
 
24
- または、次のようにインストールします:
25
-
26
- $ gem install tttrans
27
-
28
- ### 環境変数設定
29
- 環境変数を設定する必要があるため、`~/.bashrc` などに環境変数を以下のように設定してください。
31
+ ### ログイン設定
32
+ API を利用するにはユーザー ID や API キーなどを設定する必要があるため、
33
+ `~/.tttconfig` に以下のように設定を書き込んでください。
30
34
 
31
- ```bash
32
- export TexTra_URI_EN_JA=https://mt-auto-minhon-mlt.ucri.jgn-x.jp/api/mt/generalNT_en_ja/
33
- export TexTra_ID=【TexTra に登録した ID】
34
- export TexTra_API_KEY=【API key】
35
- export TexTra_API_SECRET=【API secret】
35
+ ```ini
36
+ [textra]
37
+ id=【TexTra に登録したユーザー ID】
38
+ api_key=【API key】
39
+ api_secret=【API secret】
36
40
  ```
37
41
 
38
- 詳しくは、https://www.hikari-dev.com/2022/06/22/TexTra-ruby/ を参照してください。
39
-
40
42
  ## 使用方法
41
43
 
42
44
  `gem install` によってインストールを行った場合は、以下のコマンドで対話型翻訳を実行できます。
@@ -52,15 +54,15 @@ $ bundle # 1 回だけ
52
54
  $ bundle exec ttt
53
55
  ```
54
56
 
55
- `:q` で対話を終了します。
57
+ `:en2ja` で 英日翻訳モード、`:ja2en` で日英翻訳モードを切り替え可能です。
58
+
59
+ `:q` または、`Ctrl` + `C` で対話を終了します。
56
60
 
57
61
  ## 開発について
58
62
 
59
63
  リポジトリをチェックアウトした後、`bin/setup` を実行して依存関係をインストールします。
60
64
  また、`bin/console` を実行してインタラクティブなプロンプトを表示し、実験を行うこともできます。
61
65
 
62
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
63
-
64
66
  このgemをローカルマシンにインストールするには、`bundle exec rake install` を実行します。新しいバージョンをリリースするには、`version.rb` のバージョン番号を更新してから `bundle exec rake release` を実行します。
65
67
  これによりそのバージョンの git タグが作成され、git コミットと作成されたタグがプッシュされ、
66
68
  `.gem` ファイルが [rubygems.org](https://rubygems.org) に プッシュされます。
data/exe/ttt CHANGED
@@ -1,18 +1,77 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require "oauth"
5
4
  require "tttrans"
5
+ require "inifile"
6
6
 
7
- consumer = OAuth::Consumer.new(ENV["TexTra_API_KEY"], ENV["TexTra_API_SECRET"])
8
- token = OAuth::AccessToken.new(consumer)
7
+ # 設定があるか確認
8
+ def config_exists?(api_key, api_secret, user_id)
9
+ return true if [nil, ""].include?(api_key) \
10
+ || [nil, ""].include?(api_secret) \
11
+ || [nil, ""].include?(user_id)
12
+
13
+ false
14
+ end
15
+
16
+ # ~/.tttconfig から設定を読み込む
17
+ inifile = "#{ENV["HOME"]}/.tttconfig"
18
+ if File.exist?(inifile)
19
+ ini = IniFile.load(inifile)
20
+ api_key = ini["textra"]["api_key"]
21
+ api_secret = ini["textra"]["api_secret"]
22
+ user_id = ini["textra"]["id"]
23
+ end
24
+
25
+ # 環境変数が与えられた場合
26
+ envs = %w[TexTra_API_KEY TexTra_API_SECRET TexTra_ID].map do |item|
27
+ ENV[item]
28
+ end
29
+ api_key = envs[0] unless envs[0] == ""
30
+ api_secret = envs[1] unless envs[1] == ""
31
+ user_id = envs[2] unless envs[2] == ""
32
+
33
+ if config_exists?(api_key, api_secret, user_id)
34
+ warn.puts(
35
+ "\033[31mエラー: API のキーまたはユーザー ID の設定がされていません。" \
36
+ "~/.tttconfig に設定ファイルを作成してください。\033[0m"
37
+ )
38
+ exit(false)
39
+ end
40
+
41
+ token = TTTrans.token(api_key, api_secret)
42
+
43
+ mode = :en2ja
44
+ modes = {
45
+ en2ja: [" English: ", "Japanese: "],
46
+ ja2en: ["Japanese: ", " English: "]
47
+ }
9
48
 
10
49
  loop do
11
- input = Readline.readline(" English: ", true)
50
+ begin
51
+ input = Readline.readline(modes[mode][0], true)
52
+ rescue Interrupt
53
+ puts
54
+ exit(true)
55
+ end
56
+
57
+ if input.eql?(":en2ja")
58
+ puts("ℹ️ \033[36m英日翻訳に変更します\033[0m") if mode == :ja2en
59
+ mode = :en2ja
60
+ puts("-" * IO.console_size[1])
61
+ next
62
+ end
63
+
64
+ if input.eql?(":ja2en")
65
+ puts("ℹ️ \033[36m日英翻訳に変更します\033[0m") if mode == :en2ja
66
+ mode = :ja2en
67
+ puts("-" * IO.console_size[1])
68
+ next
69
+ end
70
+
12
71
  next if input.eql?("")
13
72
 
14
73
  break if input.eql?(":q")
15
74
 
16
- puts("\033[32mJapanese: \033[1;32m#{TTTrans.translate(token, input)}\033[0m")
75
+ puts("\033[32m#{modes[mode][1]}\033[1;32m#{TTTrans.translate(token, api_key, user_id, input, mode)}\033[0m")
17
76
  puts("-" * IO.console_size[1])
18
77
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TTTrans
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/tttrans.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require "readline"
4
4
  require "io/console/size"
5
5
  require "json"
6
+ require "oauth"
6
7
  require_relative "tttrans/version"
7
8
 
8
9
  # TTTrans module
@@ -10,12 +11,30 @@ module TTTrans
10
11
  class Error < StandardError; end
11
12
  # Your code goes here...
12
13
 
13
- def self.translate(token, text)
14
+ def self.token(api_key, api_secret)
15
+ consumer = OAuth::Consumer.new(api_key, api_secret)
16
+ OAuth::AccessToken.new(consumer)
17
+ end
18
+
19
+ def self.translate(
20
+ token,
21
+ api_key,
22
+ user_id,
23
+ text,
24
+ mode = :en2ja
25
+ )
26
+ case mode
27
+ when :en2ja
28
+ url = "https://mt-auto-minhon-mlt.ucri.jgn-x.jp/api/mt/generalNT_en_ja/"
29
+ when :ja2en
30
+ url = "https://mt-auto-minhon-mlt.ucri.jgn-x.jp/api/mt/generalNT_ja_en/"
31
+ end
32
+
14
33
  response = token.post(
15
- ENV["TexTra_URI_EN_JA"], {
16
- key: ENV["TexTra_API_KEY"],
34
+ url, {
35
+ key: api_key,
17
36
  type: "json",
18
- name: ENV["TexTra_ID"],
37
+ name: user_id,
19
38
  text: text
20
39
  }
21
40
  )
data/tttrans.gemspec CHANGED
@@ -32,10 +32,11 @@ Gem::Specification.new do |spec|
32
32
  spec.require_paths = ["lib"]
33
33
 
34
34
  # Uncomment to register a new dependency of your gem
35
+ spec.add_dependency "inifile", "~> 3.0.0"
35
36
  spec.add_dependency "oauth", "~> 0.5.10"
36
- spec.add_development_dependency "rubocop-rake", "~> 0.6.0"
37
37
  spec.add_development_dependency "rake", "~> 13.0.6"
38
38
  spec.add_development_dependency "rubocop", "~> 1.30.1"
39
+ spec.add_development_dependency "rubocop-rake", "~> 0.6.0"
39
40
 
40
41
  # For more information and examples about making a new gem, check out our
41
42
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: TTTrans
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - MURATA Mitsuharu
@@ -11,33 +11,33 @@ cert_chain: []
11
11
  date: 2022-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: oauth
14
+ name: inifile
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.5.10
19
+ version: 3.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.5.10
26
+ version: 3.0.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: rubocop-rake
28
+ name: oauth
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.6.0
34
- type: :development
33
+ version: 0.5.10
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.6.0
40
+ version: 0.5.10
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.30.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop-rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.6.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.6.0
69
83
  description:
70
84
  email:
71
85
  - hikari.photon+dev@gmail.com