class Smartdict::Translator::Base

Public Class Methods

new(translator = nil) click to toggle source

Just to make the interface compatible

# File lib/smartdict/translator/base.rb, line 5
def initialize(translator = nil)
end

Public Instance Methods

call(word, opts) click to toggle source
# File lib/smartdict/translator/base.rb, line 8
def call(word, opts)
  validate_opts!(opts)
  driver = Smartdict::Core::DriverManager.find(opts[:driver])

  translation_model = Models::Translation.find(word, opts[:from_lang], opts[:to_lang], opts[:driver])
  unless translation_model
    translation = driver.translate(word, opts[:from_lang], opts[:to_lang])
    translation_model = Models::Translation.create_from_struct(translation)
  end
  log_query(translation_model) if opts[:log]
  translation_model.to_struct
end

Private Instance Methods

log_query(translation) click to toggle source
# File lib/smartdict/translator/base.rb, line 31
def log_query(translation)
  Models::TranslationQuery.create(:translation => translation)
end
validate_opts!(opts) click to toggle source
# File lib/smartdict/translator/base.rb, line 24
def validate_opts!(opts)
  required_opts = [:from_lang, :to_lang, :driver, :log]
  required_opts.each do |opt|
    raise(MissingOption.new(opt)) if opts[opt].nil?
  end
end