class Glosbe::Language

Attributes

from[R]
to[R]

Public Class Methods

define(phrase, args) click to toggle source
# File lib/glosbe/language.rb, line 9
def define(phrase, args)
  from, to = extract_lanuages(args)
  self.new(from: from, to: to).define(phrase)
end
new(from:, to:) click to toggle source
# File lib/glosbe/language.rb, line 36
def initialize(from:, to:)
  @from = parse_language(from)
  @to = parse_language(to)
end
translate(phrase, args) click to toggle source
# File lib/glosbe/language.rb, line 4
def translate(phrase, args)
  from, to = extract_lanuages(args)
  self.new(from: from, to: to).translate(phrase)
end
translated_define(phrase, args) click to toggle source
# File lib/glosbe/language.rb, line 14
def translated_define(phrase, args)
  from, to = extract_lanuages(args)
  self.new(from: from, to: to).translated_define(phrase)
end

Private Class Methods

extract_lanuages(args) click to toggle source
# File lib/glosbe/language.rb, line 21
def extract_lanuages(args)
  raise ArgumentError, "expected hash but received #{args.class}" unless args.is_a?(Hash)

  if args.keys.sort == [:from, :to]
    [args[:from], args[:to]]
  elsif args.size == 1
    args.first
  else
    raise ArgumentError, "languages must be specified as `from: :aaa, to: :bbb` or `aaa: :bbb`"
  end
end

Public Instance Methods

define(phrase) click to toggle source
# File lib/glosbe/language.rb, line 50
def define(phrase)
  lookup(phrase).define
end
lookup(phrase) click to toggle source
# File lib/glosbe/language.rb, line 41
def lookup(phrase)
  http = Glosbe::HTTP.new(from: from, to: to, phrase: phrase)
  Glosbe::Response.new(http.body, ok: http.ok?)
end
translate(phrase) click to toggle source
# File lib/glosbe/language.rb, line 46
def translate(phrase)
  lookup(phrase).translation
end
translated_define(phrase) click to toggle source
# File lib/glosbe/language.rb, line 54
def translated_define(phrase)
  lookup(phrase).translated_define
end

Private Instance Methods

parse_language(value) click to toggle source
# File lib/glosbe/language.rb, line 60
def parse_language(value)
  value = value.to_s if value
  raise ArgumentError, "Language must be a string or a symbol. Received `#{ value }`." unless value.is_a?(String)
  raise ArgumentError, "Language must the 2 or 3 character ISO-639 code. Received `#{ value }`. "\
    "http://en.wikipedia.org/wiki/List_of_ISO_639-3_codes https://glosbe.com/all-languages" unless (2..3).include?(value.length)
  Glosbe::LanguageCode.normalize(value)
end