class Furirubi::Translators::JishoWebTranslator
Constants
- URL
Public Instance Methods
translate(search_term, flag = 'flag')
click to toggle source
@tricky: the flag is using to force-change the word to sentence
# File lib/furirubi/translators/jisho_web_translator.rb, line 12 def translate(search_term, flag = 'flag') words = {} uri = URI.join(URL, ERB::Util.url_encode(search_term + flag)) elements = Nokogiri::HTML.parse(open(uri)).css('.japanese_word') elements.each do |element| result = parse_element(element, flag) words.merge!(result) unless result.nil? end words end
Private Instance Methods
parse_element(element, flag)
click to toggle source
# File lib/furirubi/translators/jisho_web_translator.rb, line 27 def parse_element(element, flag) # parse furigana if element.search('.japanese_word__furigana').size.positive? furigana_elements = element.search('.japanese_word__furigana') return parse_furigana_elements(furigana_elements) end # parse kana or symbol parse_general_text(element, flag) end
parse_furigana_elements(elements)
click to toggle source
# File lib/furirubi/translators/jisho_web_translator.rb, line 38 def parse_furigana_elements(elements) words = {} elements.each do |el| if el.attr('data-text').empty? words[el.text] = '' next end words[el.attr('data-text')] = el.text end words end
parse_general_text(element, flag)
click to toggle source
# File lib/furirubi/translators/jisho_web_translator.rb, line 53 def parse_general_text(element, flag) # parse kana text = element.search('.japanese_word__text_wrapper a').text # parse symbol text = element.search('.japanese_word__text_wrapper').text if text.empty? { text => '' } if text != flag end