papago 1.0.8 → 1.0.9

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: 179b9cb39a88b08caef98a7dd26abb8f98c6d454bad566b22cab24c902cdce48
4
- data.tar.gz: d69d05e43e61566daaf51a8aa4e642fad326400509bb7c393f5d6f0e240ae8d4
3
+ metadata.gz: 89655ddfbce6f30231bc51303aa14f9f4fdacb5e150ebd1be3ca21a251519251
4
+ data.tar.gz: 68c281a7638c1b8bfae301e80297f28a2595b5822072002dfbf024fc0bfbd9e6
5
5
  SHA512:
6
- metadata.gz: 79cf6f39c611b57d7885828c86b7d63a4f89f619e4331ebe10e042cebd4e9441b813a05055a991fc3f41d48330e630cdd484159b89e286e65bbea336d2075f2f
7
- data.tar.gz: '013442539123adf7de53317b229df6b28d5432c003077e00d10afc94975cf84c19bb358a3f2628fe41770da83ee8993f681df44378f7d046336c51dc8c25d462'
6
+ metadata.gz: d7b25abab7dbfe25f0f048e43a7f84cb31133e3b66e5016034bd0ca7d390aa9754ace422a11f4de21e3cc73850dcb9da38b5cbc955f00ef39dd92d1918272543
7
+ data.tar.gz: 6992b0a1c641e99898a1b87d51df287e0927516b9d3077e60de4222d9a4af8dee9175c548613060049cb08d97b492fb6c70f5c2711015c743b48df9ff36a23ee
data/bin/papago CHANGED
@@ -1,35 +1,3 @@
1
1
  #!/usr/bin/env ruby
2
- require 'mercenary'
3
- require 'papago'
4
-
5
- Mercenary.program(:papago) do |program|
6
- program.version Papago::VERSION
7
- program.syntax 'papago <text> [options]'
8
-
9
- program.option 'switch', '-s', '--switch', 'Select a service'
10
- program.option 'input', '-i', '--input PATH', String, 'Set file path'
11
- program.option 'dest', '--dest IDENT', String, 'Set target language'
12
2
 
13
- program.action do |args, options|
14
- if options['switch']
15
- Papago::Actions::Switch
16
- .process(config: Papago.config)
17
- else
18
- text = args.join(' ').strip
19
- path = options['input']
20
-
21
- if path and File.file?(path)
22
- text = File.read(path)
23
- .gsub(/\n/, ' ')
24
- .strip
25
- end
26
-
27
- if text.empty?
28
- puts 'No content'
29
- else
30
- Papago::Actions::Run
31
- .process(text: text, dest: options['dest'])
32
- end
33
- end
34
- end
35
- end
3
+ require 'papago'
@@ -1,3 +1,3 @@
1
1
  module Papago
2
- VERSION = '1.0.8'
2
+ VERSION = '1.0.9'
3
3
  end
metadata CHANGED
@@ -1,130 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: papago
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
- - razeos at tossdev
7
+ - oneureka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-17 00:00:00.000000000 Z
11
+ date: 2026-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: http
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '5.1'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '5.1'
27
- - !ruby/object:Gem::Dependency
28
- name: treely
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '1.0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.0'
41
- - !ruby/object:Gem::Dependency
42
- name: lolcat
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '100.0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '100.0'
55
- - !ruby/object:Gem::Dependency
56
- name: mercenary
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 0.4.0
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 0.4.0
69
- - !ruby/object:Gem::Dependency
70
- name: tty-config
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 0.6.0
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 0.6.0
83
13
  - !ruby/object:Gem::Dependency
84
14
  name: tty-prompt
85
15
  requirement: !ruby/object:Gem::Requirement
86
16
  requirements:
87
17
  - - "~>"
88
18
  - !ruby/object:Gem::Version
89
- version: 0.23.1
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 0.23.1
97
- - !ruby/object:Gem::Dependency
98
- name: dolphin_kit
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '1.0'
19
+ version: '0.23'
104
20
  type: :runtime
105
21
  prerelease: false
106
22
  version_requirements: !ruby/object:Gem::Requirement
107
23
  requirements:
108
24
  - - "~>"
109
25
  - !ruby/object:Gem::Version
110
- version: '1.0'
26
+ version: '0.23'
111
27
  description:
112
- email:
28
+ email: oneureka@github.io
113
29
  executables:
114
30
  - papago
115
31
  extensions: []
116
32
  extra_rdoc_files: []
117
33
  files:
118
34
  - bin/papago
119
- - lib/papago.rb
120
- - lib/papago/actions/run.rb
121
- - lib/papago/actions/switch.rb
122
- - lib/papago/printer.rb
123
- - lib/papago/services/openai_service.rb
124
35
  - lib/papago/version.rb
125
- homepage: https://papago.vercel.app
36
+ homepage: https://dub.sh/papago
126
37
  licenses:
127
- - MIT
38
+ - BSD-1-Clause
128
39
  metadata: {}
129
40
  post_install_message:
130
41
  rdoc_options: []
@@ -134,15 +45,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
134
45
  requirements:
135
46
  - - ">="
136
47
  - !ruby/object:Gem::Version
137
- version: '0'
48
+ version: '3.0'
138
49
  required_rubygems_version: !ruby/object:Gem::Requirement
139
50
  requirements:
140
51
  - - ">="
141
52
  - !ruby/object:Gem::Version
142
53
  version: '0'
143
54
  requirements: []
144
- rubygems_version: 3.1.2
55
+ rubygems_version: 3.5.22
145
56
  signing_key:
146
57
  specification_version: 4
147
- summary: A simple command-line translator
58
+ summary: A translation toolkit
148
59
  test_files: []
@@ -1,42 +0,0 @@
1
- module Papago
2
- module Actions
3
- class Run
4
- attr_reader :printer
5
- attr_reader :service
6
-
7
- def initialize
8
- @printer = Papago::Printer.new
9
- @service = create_service(Papago.service_name || 'youdao')
10
- end
11
-
12
- private
13
-
14
- def create_service(name)
15
- if name.to_sym == :openai
16
- Papago::OpenAIService.new(config: Papago.config)
17
- else
18
- DolphinKit.create_service(name)
19
- end
20
- end
21
-
22
- def self.process(text:, dest:)
23
- instance = self.new
24
- printer = instance.printer
25
- service = instance.service
26
-
27
- case service.name
28
- when :baidu, :qcloud
29
- printer.println(
30
- service.name,
31
- service.call(text: text, target: dest)
32
- )
33
- else
34
- printer.println(
35
- service.name,
36
- service.call(text: text)
37
- )
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,22 +0,0 @@
1
- module Papago
2
- module Actions
3
- class Switch
4
- CHOICES = %w{baidu openai qcloud youdao}
5
-
6
- def self.process(config:)
7
- prompt = TTY::Prompt.new
8
- choice = prompt.select('Choose a service?', CHOICES)
9
-
10
- config.set('translator.service_name', value: choice)
11
- config.write(force: true)
12
-
13
- if choice == 'openai' and (config.fetch('openai.endpoint').nil? or prompt.yes?('Update endpoint?'))
14
- if endpoint = prompt.ask('OpenAI endpoint:')
15
- config.set('openai.endpoint', value: endpoint)
16
- config.write(force: true)
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,68 +0,0 @@
1
- module Papago
2
- class Printer
3
- def println(name, data)
4
- puts send(:"result_#{name}", data)
5
- end
6
-
7
- private
8
-
9
- def result_baidu(data)
10
- result = data['trans_result']&.first
11
- return data if result.nil?
12
-
13
- tree_format({
14
- name: result['src'],
15
- contents: [
16
- {
17
- name: result['dst']
18
- }
19
- ]
20
- })
21
- end
22
-
23
- def result_openai(data)
24
- result = data['choices']&.first['text']
25
- return data if result.nil?
26
-
27
- tree_format({
28
- name: result&.strip
29
- })
30
- end
31
-
32
- def result_qcloud(data)
33
- result = data['TargetText']
34
- return data if result.nil?
35
-
36
- tree_format({
37
- name: result
38
- })
39
- end
40
-
41
- def result_youdao(data)
42
- return data unless data['errorCode'].zero?
43
-
44
- explains = data.fetch('web', []).map { |explain|
45
- {
46
- name: "#{explain.fetch('key')}: #{explain.fetch('value').join(' ')}"
47
- }
48
- }
49
-
50
- result = {
51
- name: "#{data['query']} [#{data.dig('basic', 'phonetic')}]".gsub(' []', ''),
52
- contents: [
53
- {
54
- name: data.fetch('translation').join(' '),
55
- contents: (data.dig('basic', 'explains') || []).map { |explain| { name: explain } }
56
- }
57
- ] + explains
58
- }
59
-
60
- tree_format(result)
61
- end
62
-
63
- def tree_format(data)
64
- result = StringIO.new(Treely.tree([data]).to_s)
65
- Lol.cat(result, freq: 0.25, spread: 8.0, os: rand(128))
66
- end
67
- end
68
- end
@@ -1,39 +0,0 @@
1
- require 'securerandom'
2
-
3
- module Papago
4
- class OpenAIService
5
- attr_reader :name
6
-
7
- def initialize(api_key: nil, config:)
8
- @endpoint = config.fetch('openai.endpoint')
9
- @token = api_key || ENV['OPENAI_FANYI_API_KEY']
10
-
11
- @config = config
12
- @name = :openai
13
- end
14
-
15
- def call(text:, user: nil)
16
- user ||= generate_user_id
17
- response = HTTP
18
- .auth("Token #{@token}")
19
- .post(@endpoint, json: { prompt: text, user: user })
20
-
21
- JSON.parse(response.body)
22
- end
23
-
24
- private
25
-
26
- def generate_user_id
27
- @user_id ||= @config.fetch('user_id')
28
-
29
- if @user_id.nil?
30
- @user_id = SecureRandom.hex
31
-
32
- @config.set('user_id', value: @user_id)
33
- @config.write(force: true)
34
- end
35
-
36
- @user_id
37
- end
38
- end
39
- end
data/lib/papago.rb DELETED
@@ -1,56 +0,0 @@
1
- require 'json'
2
- require 'http'
3
- require 'lolcat'
4
- require 'treely'
5
- require 'stringio'
6
- require 'fileutils'
7
- require 'tty-config'
8
- require 'tty-prompt'
9
- require 'dolphin_kit'
10
-
11
- require 'papago/version'
12
- require 'papago/services/openai_service'
13
- require 'papago/actions/switch'
14
- require 'papago/actions/run'
15
- require 'papago/printer'
16
-
17
- module Papago
18
- class Application
19
- attr_reader :config
20
-
21
- def initialize
22
- @config = TTY::Config.new
23
- @config_dir = File.dirname(config_file)
24
-
25
- unless File.exist?(@config_dir)
26
- FileUtils.mkdir(@config_dir)
27
- end
28
-
29
- @config.append_path @config_dir
30
-
31
- if File.exist?(config_file)
32
- @config.read
33
- else
34
- @config.write
35
- end
36
- end
37
-
38
- private
39
-
40
- def config_file
41
- @config_file ||= "#{Dir.home}/.papago/config.yml"
42
- end
43
- end
44
-
45
- def self.service_name
46
- config.fetch('translator.service_name')
47
- end
48
-
49
- def self.application
50
- @application ||= Application.new
51
- end
52
-
53
- def self.config
54
- @config ||= application.config
55
- end
56
- end