]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/translator.rb
Fixed googlefight.rb regex
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / translator.rb
index 9fb74e8a5da879109d2ed9179fdffd0bcf4acc98..2e7be919020760eb5c44ee099374e2e56147e2b1 100644 (file)
@@ -215,18 +215,24 @@ class BabelfishTranslator < Translator
 
   def initialize(cache)
     require 'mechanize'
-    form = WWW::Mechanize.new.get('http://babelfish.altavista.com/babelfish/').
-           forms_with(:name => 'frmTrText').first
-    lang_list = form.fields_with(:name => 'lp').first
+    (_, lang_list) = parse_page
     language_pairs = lang_list.options.map {|o| o.value.split('_')}.
                                            reject {|p| p.empty?}
     super(Translator::Direction.pairs(language_pairs), cache)
   end
 
-  def do_translate(text, from, to)
-    @form ||= WWW::Mechanize.new.get('http://babelfish.altavista.com/babelfish/').
-              forms_with(:name => 'frmTrText').first
+  def parse_page
+    form = WWW::Mechanize.new.get('http://babelfish.altavista.com/babelfish/').
+           forms_with(:name => 'frmTrText').first
+    lang_list = form.fields_with(:name => 'lp').first
+    [form, lang_list]
+  end
 
+  def do_translate(text, from, to)
+    unless @form && @lang_list
+      @form, @lang_list = parse_page
+    end
+    
     if @form.fields_with(:name => 'trtext').empty?
       @form.add_field!('trtext', text)
     else