oversetter 1.0.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.
@@ -0,0 +1,5 @@
1
+ # coding: utf-8
2
+ require 'oversetter/yandex/detect'
3
+ require 'oversetter/yandex/getlangs'
4
+ require 'oversetter/yandex/text'
5
+ require 'oversetter/yandex/translate'
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ %w{httpi multi_json multi_xml rainbow}.map { |lib| require lib }
3
+
4
+ module Oversetter
5
+ class Yandex
6
+ # Detects the language for a given word or phrase.
7
+ class Detect
8
+ # @param search [String] The word or phrase for which to detect the language.
9
+ # @param params [Hash] The search parameters to use.
10
+ def detect(search, params)
11
+ func, result = 'detect', nil
12
+ det = Oversetter::Yandex.new
13
+ result = det.get_word(search, func, params, result)
14
+ result = MultiJson.load(result)
15
+ if result != nil && result['code'] == 200
16
+ lang = result['lang']
17
+ label = 'Detect language'
18
+ Oversetter.label(label)
19
+ puts "#{lang}"
20
+ else
21
+ puts "Yandex returned an empty string."
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,39 @@
1
+ # coding: utf-8
2
+ %w{httpi multi_json multi_xml rainbow}.map { |lib| require lib }
3
+
4
+ module Oversetter
5
+ class Yandex
6
+ # Lists supported translation 'directions,' pairs of source and target languages.
7
+ class Getlangs
8
+ # @param search [String] The word or phrase for which to detect the language.
9
+ # @param params [Hash] The search parameters to use.
10
+ def get_lang(search, params)
11
+ func, result = 'getLangs', nil
12
+ lang = Oversetter::Yandex.new
13
+ result = lang.get_word(search, func, params, result)
14
+ result = MultiJson.load(result)
15
+ dirs = result['dirs']
16
+ if result['langs'] != nil
17
+ langs = result['langs']
18
+ end
19
+ x, y, label = 0, dirs.length - 1, 'Translation directions'
20
+ Oversetter.label(label)
21
+ while x <= y
22
+ print "#{dirs[x]}"
23
+ print ', '
24
+ x += 1
25
+ end
26
+ puts ''
27
+ if langs != nil
28
+ label = 'Language names'
29
+ Oversetter.label(label)
30
+ langs.map { |k,v|
31
+ print "#{k} -> #{v}"
32
+ print ', '
33
+ }
34
+ puts ''
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,33 @@
1
+ # coding: utf-8
2
+ %w{httpi multi_json multi_xml open-uri rainbow}.map { |lib| require lib }
3
+
4
+ module Oversetter
5
+ # Yandex.com's service provides translations and detections.
6
+ class Yandex
7
+ # Fetches dynamically generated URL. Functions are translate,
8
+ # detect, and getLangs.
9
+ #
10
+ # @param search [String] The word or phrase to search for.
11
+ # @param func [String] The search function to use.
12
+ # @param params [Hash] The search parameters to use.
13
+ # @param result [String] The search response.
14
+ def get_word(search, func, params, result)
15
+ search = URI.encode(search)
16
+ prefix = 'https://translate.yandex.net/api/v1.5/tr.json/'
17
+ word, pcont = "#{prefix}#{func}?", []
18
+ if func != 'getLangs' then pcont.push "text=#{search}&"; end
19
+ params.map { |k, v|
20
+ if k == :lang then pcont.push "lang=#{v}&"; end
21
+ if k == :ui then pcont.push "ui=#{v}&"; end
22
+ }
23
+ if func == 'translate' || func == 'detect' then pcont.push 'format=plain&'; end
24
+ if func == 'translate' then pcont.push 'options=1&'; end
25
+ apikey = ENV['YANDEX']
26
+ pcont.push "key=#{apikey}"
27
+ url = "#{word}#{pcont.join}"
28
+ request = HTTPI::Request.new(url)
29
+ getter = HTTPI.get(request)
30
+ result = getter.body
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,43 @@
1
+ # coding: utf-8
2
+ %w{httpi multi_json multi_xml open-uri rainbow}.map { |lib| require lib }
3
+
4
+ module Oversetter
5
+ class Yandex
6
+ # Fetches translations from Yandex.
7
+ class Translate
8
+ # @param search [String] The word or phrase to search for.
9
+ # @param params [Hash] The search parameters to use.
10
+ def get_trans(search, params)
11
+ func, result = 'translate', nil
12
+ tran = Oversetter::Yandex.new
13
+ result = tran.get_word(search, func, params, result)
14
+ result = MultiJson.load(result)
15
+ if result != nil
16
+ st = { 'searchterm' => URI.decode(search) }
17
+ type = { 'type' => 'translation' }
18
+ Oversetter.tofile(st)
19
+ Oversetter.tofile(type)
20
+ label = 'Translation'
21
+ if result['code'] == 200
22
+ detected = result['detected']
23
+ lang = result['lang']
24
+ text = result['text']
25
+ Oversetter.label(label)
26
+ if detected != nil
27
+ detected = detected['lang']
28
+ print Rainbow("Detected: #{detected}|").bright
29
+ end
30
+ dir = { 'direction' => lang }
31
+ out = { 'translation' => text }
32
+ Oversetter.tofile(dir)
33
+ Oversetter.tofile(out)
34
+ print Rainbow("Language direction: #{lang}|").bright
35
+ puts "Result: #{text[0]}"
36
+ end
37
+ else
38
+ puts 'Yandex returned an empty string.'
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
metadata ADDED
@@ -0,0 +1,294 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: oversetter
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Drew Prentice
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-06-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: gli
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.13'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.13'
27
+ - !ruby/object:Gem::Dependency
28
+ name: htmlentities
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: httpi
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.4'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: metainspector
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '4.6'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.6'
69
+ - !ruby/object:Gem::Dependency
70
+ name: multi_json
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.11'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.11'
83
+ - !ruby/object:Gem::Dependency
84
+ name: multi_xml
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.5'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.5'
97
+ - !ruby/object:Gem::Dependency
98
+ name: nokogiri
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.6'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.6'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rainbow
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '2.0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '2.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubyntlm
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.5'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.5'
139
+ - !ruby/object:Gem::Dependency
140
+ name: xml-fu
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.2'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.2'
153
+ - !ruby/object:Gem::Dependency
154
+ name: aruba
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.6'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.6'
167
+ - !ruby/object:Gem::Dependency
168
+ name: bundler
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '1.10'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '1.10'
181
+ - !ruby/object:Gem::Dependency
182
+ name: coveralls
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '0.8'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '0.8'
195
+ - !ruby/object:Gem::Dependency
196
+ name: rake
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '10.4'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '10.4'
209
+ - !ruby/object:Gem::Dependency
210
+ name: spinach
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '0.8'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '0.8'
223
+ - !ruby/object:Gem::Dependency
224
+ name: yard
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '0.8'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: '0.8'
237
+ description: Use translation services from the command line.
238
+ email: weirdpercent@gmail.com
239
+ executables:
240
+ - oversetter
241
+ extensions: []
242
+ extra_rdoc_files: []
243
+ files:
244
+ - CHANGELOG.md
245
+ - bin/oversetter
246
+ - lib/oversetter.rb
247
+ - lib/oversetter/cli/glosbe.rb
248
+ - lib/oversetter/cli/hablaa.rb
249
+ - lib/oversetter/cli/yandex.rb
250
+ - lib/oversetter/glosbe.rb
251
+ - lib/oversetter/glosbe/example.rb
252
+ - lib/oversetter/glosbe/text.rb
253
+ - lib/oversetter/glosbe/translate.rb
254
+ - lib/oversetter/hablaa.rb
255
+ - lib/oversetter/hablaa/example.rb
256
+ - lib/oversetter/hablaa/getlangs.rb
257
+ - lib/oversetter/hablaa/similar.rb
258
+ - lib/oversetter/hablaa/text.rb
259
+ - lib/oversetter/hablaa/translate.rb
260
+ - lib/oversetter/version.rb
261
+ - lib/oversetter/yandex.rb
262
+ - lib/oversetter/yandex/detect.rb
263
+ - lib/oversetter/yandex/getlangs.rb
264
+ - lib/oversetter/yandex/text.rb
265
+ - lib/oversetter/yandex/translate.rb
266
+ homepage: http://github.com/weirdpercent/oversetter
267
+ licenses:
268
+ - MIT
269
+ metadata: {}
270
+ post_install_message: |-
271
+ Thanks for using oversetter!
272
+ Please get necessary API keys as shown in:
273
+ http://github.com/weirdpercent/oversetter
274
+ rdoc_options: []
275
+ require_paths:
276
+ - lib
277
+ required_ruby_version: !ruby/object:Gem::Requirement
278
+ requirements:
279
+ - - ">="
280
+ - !ruby/object:Gem::Version
281
+ version: '0'
282
+ required_rubygems_version: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - ">="
285
+ - !ruby/object:Gem::Version
286
+ version: '0'
287
+ requirements: []
288
+ rubyforge_project:
289
+ rubygems_version: 2.4.2
290
+ signing_key:
291
+ specification_version: 4
292
+ summary: A powerful text translation tool.
293
+ test_files: []
294
+ has_rdoc: