class GgTranslator::Translator
Attributes
last[RW]
phrase_mode[RW]
sl[RW]
tl[RW]
Public Class Methods
new(sl = 'auto', tl = 'ru')
click to toggle source
# File lib/gg_translator.rb, line 26 def initialize(sl = 'auto', tl = 'ru') @sl = sl @tl = tl end
Public Instance Methods
exp(text = nil)
click to toggle source
# File lib/gg_translator.rb, line 39 def exp(text = nil) text.strip! text ||= Readline::HISTORY.to_a.last text = URI.encode(text) req = "/translate_a/ex?sl=#{@sl}&tl=#{@tl}&q=#{text}" res = ask_google(req)[0][0] res && res.map{|e| [e.first, e[3]]}.each do |s, translation| s = s.split(/<b>|<\/b>/) puts "#{s[0]}#{s[1].upcase}#{s[2]}" s = translation.split(/<b>|<\/b>/) puts "#{s[0]}**#{s[1].upcase}**#{s[2]}" puts '-'*80 end true end
t(text)
click to toggle source
# File lib/gg_translator.rb, line 31 def t(text) base_url = '/translate_a/t?client=j&pc=0&oc=1&hl=en&ie=UTF-8&oe=UTF-8' req = "#{base_url}&text=#{text}&sl=#{@sl}&tl=#{@tl}" result = ask_google(req) @sl = result['src'] #remember language print_result(result) end
Private Instance Methods
ask_google(req)
click to toggle source
# File lib/gg_translator.rb, line 56 def ask_google(req) proxy = URI.parse(ENV['http_proxy']) if ENV['http_proxy'] worker = proxy ? Net::HTTP::Proxy(proxy.host, proxy.port) : Net::HTTP JSON.parse(worker.get_response('translate.google.com', req).body) end
print_result(result)
click to toggle source
# File lib/gg_translator.rb, line 62 def print_result(result) sentences = [] result['sentences'].each do |s| sentences << "#{s['trans']}" end puts '' puts '-'*80 puts "#{result['sentences'][0]['orig']}: #{sentences.join(', ')} (#{result['src']})" if result['dict'] s = [] result['dict'].each_with_index do |d, i| s[i] = ["#{d['pos']}: "] d['terms'].each_with_index do |t| (s[i] ||= []) << "- #{t}" end end i = 0 res = [''] while i < s.size do if res[0].size > 50 puts '-' * 80 puts res res = [''] end res = joins(res, s[i]) i+=1 end puts '-' * 80 puts res end end