class EPUB::Searcher::XHTML::Restricted
Public Instance Methods
Source
# File lib/epub/searcher/xhtml.rb, line 28 def search_text(word, element=nil) results = [] elem_index = 0 (element || @element).children.each do |child| if child.element? child_step = Result::Step.new(:element, elem_index, {:name => child.name, :id => child.attribute_with_prefix('id')}) if child.name == 'img' if child.attribute_with_prefix('alt').index(word) results << Result.new([child_step], nil, nil) end else search_text(word, child).each do |sub_result| results << Result.new([child_step] + sub_result.parent_steps, sub_result.start_steps, sub_result.end_steps) end end elem_index += 1 elsif child.text? text_index = elem_index char_index = 0 text_step = Result::Step.new(:text, text_index) while char_index = child.text.index(word, char_index) results << Result.new([text_step], [Result::Step.new(:character, char_index)], [Result::Step.new(:character, char_index + word.length)]) char_index += 1 end end end results end
@param element [REXML::Element, Oga::XML::Element, Nokogiri::XML::Element] @return [Array<Result>]