command_translate 0.0.2

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,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 67d5aa10a32d119228e4dc68e3ef8736375f9c52
4
+ data.tar.gz: bd943e96a0c1a4318ba98ea926d3fc4df4411296
5
+ SHA512:
6
+ metadata.gz: 1f514f3ab7d86f4bcbc1644338e5a67e2e506cf22b12731d4fcee12a926b50d2e907b6d566a0147ff50bd8b9677c4e3ab92e5a71321a85a062d0ae4ffc540091
7
+ data.tar.gz: 0104f14b8234243f33f4cf80a2fdd4cdbcb4d97b8cf2db6acce8fb60c2f91ce7c068eb9d1d54a7aa7eaa5de5cb2a1f82705863c7cad5d4863401a6120f5dd3f1
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'command_translate'
4
+
5
+ LANGUAGES = {
6
+ :af => "Afrikaans",
7
+ :sq => "Albanian",
8
+ :ar => "Arabic",
9
+ :az => "Azerbaijani",
10
+ :eu => "Basque",
11
+ :bn => "Bengali",
12
+ :be => "Belarusian",
13
+ :bg => "Bulgarian",
14
+ :ca => "Catalan",
15
+ :'zh-CN' => "Chinese Simplified",
16
+ :'zh-TW' => "Chinese Traditional",
17
+ :hr => "Croatian",
18
+ :cs => "Czech",
19
+ :da => "Danish",
20
+ :nl => "Dutch",
21
+ :en => "English",
22
+ :eo => "Esperanto",
23
+ :et => "Estonian",
24
+ :tl => "Filipino",
25
+ :fi => "Finnish",
26
+ :fr => "French",
27
+ :gl => "Galician",
28
+ :ka => "Georgian",
29
+ :de => "German",
30
+ :el => "Greek",
31
+ :gu => "Gujarati",
32
+ :ht => "Haitian Creole",
33
+ :iw => "Hebrew",
34
+ :hi => "Hindi",
35
+ :hu => "Hungarian",
36
+ :is => "Icelandic",
37
+ :id => "Indonesian",
38
+ :ga => "Irish",
39
+ :it => "Italian",
40
+ :ja => "Japanese",
41
+ :kn => "Kannada",
42
+ :ko => "Korean",
43
+ :la => "Latin",
44
+ :lv => "Latvian",
45
+ :lt => "Lithuanian",
46
+ :mk => "Macedonian",
47
+ :ms => "Malay",
48
+ :mt => "Maltese",
49
+ :no => "Norwegian",
50
+ :fa => "Persian",
51
+ :pl => "Polish",
52
+ :pt => "Portuguese",
53
+ :'pt-br' => "Brazilian Portuguese",
54
+ :ro => "Romanian",
55
+ :ru => "Russian",
56
+ :sr => "Serbian",
57
+ :sk => "Slovak",
58
+ :sl => "Slovenian",
59
+ :es => "Spanish",
60
+ :sw => "Swahili",
61
+ :sv => "Swedish",
62
+ :ta => "Tamil",
63
+ :te => "Telugu",
64
+ :th => "Thai",
65
+ :tr => "Turkish",
66
+ :uk => "Ukrainian",
67
+ :ur => "Urdu",
68
+ :vi => "Vietnamese",
69
+ :cy => "Welsh",
70
+ :yi => "Yiddish",
71
+ }
72
+
73
+ arg = ARGV[0] ? ARGV[0].downcase : ""
74
+
75
+ case arg
76
+ when "help"
77
+ CommandTranslate.help
78
+ when "languages"
79
+ CommandTranslate.languages
80
+ else
81
+ CommandTranslate.translate
82
+ end
@@ -0,0 +1,45 @@
1
+ require 'command_translate/version.rb'
2
+ require 'command_translate/translation.rb'
3
+ require 'command_translate/logger.rb'
4
+ require 'net/http'
5
+ require 'json'
6
+ require 'terminal-table'
7
+
8
+ module CommandTranslate
9
+ def self.translate
10
+ options = ARGV
11
+ begin
12
+ from, to = options.shift.split(":")
13
+ if validate_languages(from, to)
14
+ text = options.join(" ")
15
+ Logger.print("Translating: #{text} (#{LANGUAGES[from.to_sym]} to #{LANGUAGES[to.to_sym]})")
16
+ result = Translation.new(text, from, to).translation
17
+ Logger.print(result)
18
+ else
19
+ Logger.info "Invalid language(s)! View all supported languages typing 'translate languages'."
20
+ end
21
+ rescue Exception => e
22
+ instructions
23
+ end
24
+ end
25
+
26
+ def self.instructions
27
+ Logger.info "Translator command line"
28
+ Logger.info "To use just run: translate from:to text"
29
+ Logger.info "e.g.: translate en:es \"My dog is crazy\""
30
+ end
31
+
32
+ def self.help
33
+ instructions
34
+ end
35
+
36
+ def self.languages
37
+ rows = LANGUAGES.collect {|k,v| [v, k] }
38
+ languages_table = Terminal::Table.new :headings => ['Language', 'Symbol'], :rows => rows
39
+ Logger.info languages_table
40
+ end
41
+
42
+ def self.validate_languages(from, to)
43
+ LANGUAGES.has_key?(from.to_sym) && LANGUAGES.has_key?(to.to_sym)
44
+ end
45
+ end
@@ -0,0 +1,18 @@
1
+ require 'logger'
2
+ require 'colorize'
3
+
4
+ module CommandTranslate
5
+
6
+ module Logger
7
+ @log = ::Logger.new(STDOUT)
8
+
9
+ def self.print(message)
10
+ @log << "=> ".green + message.white + "\n"
11
+ end
12
+
13
+ def self.info(message)
14
+ @log << "#{message}\n"
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,30 @@
1
+ # encoding: UTF-8
2
+
3
+ class Translation
4
+ attr_accessor :text, :from, :to, :translation
5
+
6
+ def initialize(text, from, to)
7
+ @text = text
8
+ @from = from
9
+ @to = to
10
+ @translation = translate.squeeze(" ")
11
+ end
12
+
13
+ def translate
14
+ encoded_url = URI.encode(url)
15
+ response = Net::HTTP.get(URI(encoded_url))
16
+
17
+ # use JSON parser to avoid to use eval
18
+ translations = JSON.parse(response.squeeze(","))
19
+
20
+ if translations[0].size > 1
21
+ translations[0].collect {|x| x[0] }.join(" ")
22
+ else
23
+ translations[1][0][1].nil? ? translations[0][0][0] : translations[1][0][1].join(", ")
24
+ end
25
+ end
26
+
27
+ def url
28
+ "http://translate.google.com.br/translate_a/t?client=t&text=#{text}&hl=#{to}&sl=#{from}&ie=UTF-8&oe=UTF-8"
29
+ end
30
+ end
@@ -0,0 +1,3 @@
1
+ module CommandTranslate
2
+ VERSION = '0.0.2'
3
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: command_translate
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - bfb
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: colorize
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: terminal-table
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: It uses Google Translate to translate words directly into the terminal.
42
+ email: b.fbohn@gmail.com
43
+ executables:
44
+ - translate
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - bin/translate
49
+ - lib/command_translate/logger.rb
50
+ - lib/command_translate/translation.rb
51
+ - lib/command_translate/version.rb
52
+ - lib/command_translate.rb
53
+ homepage: https://github.com/bfb/command_translate
54
+ licenses:
55
+ - MIT
56
+ metadata: {}
57
+ post_install_message:
58
+ rdoc_options: []
59
+ require_paths:
60
+ - lib
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubyforge_project:
74
+ rubygems_version: 2.0.7
75
+ signing_key:
76
+ specification_version: 4
77
+ summary: A simple command line translator.
78
+ test_files: []