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