class Rubyrubi::Parser::Base
Public Class Methods
new(result)
click to toggle source
# File lib/rubyrubi/parser/base.rb, line 12 def initialize(result) result = result.with_indifferent_access @result = result @original = result[:ResultSet][:ma_result][:word_list][:word] end
Public Instance Methods
add_rubi_and_okuri(word)
click to toggle source
# File lib/rubyrubi/parser/base.rb, line 25 def add_rubi_and_okuri(word) if word['feature'] && word['feature'].scan(KOMEI).size > 0 return word.clone end kanji = word['surface'].scan(KANJI) okuri = word['surface'].scan(OKURI) yomi = '' + word['reading'] return word.clone if !kanji || kanji.size == 0 kanji.map.with_index do |k, i| ret = { 'kanji' => k } oku = okuri[i] rubi = '' if oku ret.merge!({ 'okuri' => oku }) rubi = yomi.slice(0, yomi.index(oku)) yomi = yomi.slice(yomi.index(oku) + oku.length, yomi.length) else rubi = yomi end ret.merge!({ 'rubi' => rubi }) end end
create_markup(data)
click to toggle source
# File lib/rubyrubi/parser/base.rb, line 51 def create_markup(data) data.map.with_index do |e, i| if e.class == Array e.map do |r| Parser.ruby_tag(r['kanji'], r['rubi']) << "#{r['okuri'] ? r['okuri'] : ''}" end.join('') elsif e['surface'] "#{e['surface']}" end end end
parse()
click to toggle source
# File lib/rubyrubi/parser/base.rb, line 18 def parse() new_data = @original.map do |word| add_rubi_and_okuri(word) end create_markup(new_data) end