Class: Translater
- Inherits:
-
Object
- Object
- Translater
- Defined in:
- lib/google_translater/translater.rb
Overview
Translater
Class Attribute Summary collapse
-
.from_language ⇒ Object
readonly
Returns the value of attribute from_language.
-
.input ⇒ Object
readonly
Returns the value of attribute input.
-
.to_language ⇒ Object
readonly
Returns the value of attribute to_language.
Class Method Summary collapse
- .google_base_url ⇒ Object
- .google_params ⇒ Object
- .google_response ⇒ Object
- .google_url ⇒ Object
-
.language_map ⇒ Object
Putting this at the bottom to keep it out of the way.
- .languages_match? ⇒ Boolean
- .parsed_google_response ⇒ Object
- .recognized?(language) ⇒ Boolean
- .translate(input, from_language, to_language) ⇒ Object
- .translated_input ⇒ Object
- .unknown_languages? ⇒ Boolean
- .unknown_languages_message ⇒ Object
Class Attribute Details
.from_language ⇒ Object (readonly)
Returns the value of attribute from_language.
6 7 8 |
# File 'lib/google_translater/translater.rb', line 6 def from_language @from_language end |
.input ⇒ Object (readonly)
Returns the value of attribute input.
7 8 9 |
# File 'lib/google_translater/translater.rb', line 7 def input @input end |
.to_language ⇒ Object (readonly)
Returns the value of attribute to_language.
8 9 10 |
# File 'lib/google_translater/translater.rb', line 8 def to_language @to_language end |
Class Method Details
.google_base_url ⇒ Object
10 11 12 |
# File 'lib/google_translater/translater.rb', line 10 def google_base_url 'https://translate.googleapis.com/translate_a/single' end |
.google_params ⇒ Object
14 15 16 |
# File 'lib/google_translater/translater.rb', line 14 def google_params "client=gtx&sl=#{from_language}&tl=#{to_language}&dt=t&q=#{input}" end |
.google_response ⇒ Object
18 19 20 21 |
# File 'lib/google_translater/translater.rb', line 18 def google_response uri = URI google_url Net::HTTP.get_response uri end |
.google_url ⇒ Object
23 24 25 |
# File 'lib/google_translater/translater.rb', line 23 def google_url [google_base_url, google_params].join('?') end |
.language_map ⇒ Object
Putting this at the bottom to keep it out of the way
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/google_translater/translater.rb', line 63 def language_map # rubocop:disable Metrics/MethodLength { :af => 'Afrikaans', :sq => 'Albanian', :ar => 'Arabic', :az => 'Azerbaijani', :eu => 'Basque', :bn => 'Bengali', :be => 'Belarusian', :bg => 'Bulgarian', :ca => 'Catalan', :'zh-CN' => 'Chinese Simplified', :'zh-TW' => 'Chinese Traditional', :hr => 'Croatian', :cs => 'Czech', :da => 'Danish', :nl => 'Dutch', :en => 'English', :eo => 'Esperanto', :et => 'Estonian', :tl => 'Filipino', :fi => 'Finnish', :fr => 'French', :gl => 'Galician', :ka => 'Georgian', :de => 'German', :el => 'Greek', :gu => 'Gujarati', :ht => 'Haitian Creole', :iw => 'Hebrew', :hi => 'Hindi', :hu => 'Hungarian', :is => 'Icelandic', :id => 'Indonesian', :ga => 'Irish', :it => 'Italian', :ja => 'Japanese', :kn => 'Kannada', :ko => 'Korean', :la => 'Latin', :lv => 'Latvian', :lt => 'Lithuanian', :mk => 'Macedonian', :ms => 'Malay', :mt => 'Maltese', :no => 'Norwegian', :fa => 'Persian', :pl => 'Polish', :pt => 'Portuguese', :ro => 'Romanian', :ru => 'Russian', :sr => 'Serbian', :sk => 'Slovak', :sl => 'Slovenian', :es => 'Spanish', :sw => 'Swahili', :sv => 'Swedish', :ta => 'Tamil', :te => 'Telugu', :th => 'Thai', :tr => 'Turkish', :uk => 'Ukrainian', :ur => 'Urdu', :vi => 'Vietnamese', :cy => 'Welsh', :yi => 'Yiddish' } end |
.languages_match? ⇒ Boolean
27 28 29 |
# File 'lib/google_translater/translater.rb', line 27 def languages_match? to_language == from_language end |
.parsed_google_response ⇒ Object
31 32 33 |
# File 'lib/google_translater/translater.rb', line 31 def parsed_google_response google_response.body.gsub(/\[|\]|"/, '').split(',').first end |
.recognized?(language) ⇒ Boolean
35 36 37 |
# File 'lib/google_translater/translater.rb', line 35 def recognized?(language) language_map.key?(language) end |
.translate(input, from_language, to_language) ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/google_translater/translater.rb', line 39 def translate(input, from_language, to_language) @input = input @from_language = from_language.to_sym @to_language = to_language.to_sym return input if languages_match? return if unknown_languages? translated_input end |
.translated_input ⇒ Object
48 49 50 |
# File 'lib/google_translater/translater.rb', line 48 def translated_input parsed_google_response end |
.unknown_languages? ⇒ Boolean
52 53 54 55 56 |
# File 'lib/google_translater/translater.rb', line 52 def unknown_languages? return false if recognized?(from_language) && recognized?(to_language) result = recognized?(from_language) ? [] : [from_language] result << to_language unless recognized?(to_language) end |
.unknown_languages_message ⇒ Object
58 59 60 |
# File 'lib/google_translater/translater.rb', line 58 def "I don't recognize #{unknown_languages.join(' or ')}" end |