class Hatemile::Util::Html::NokogiriLib::NokogiriHTMLDOMParser
The class NokogiriHTMLDOMParser
is official implementation of HTMLDOMParser
interface for the Nokogiri library.
Public Class Methods
Initializes a new object that encapsulate the parser of Jsoup.
@param code_or_parser [String, Nokogiri::HTML::Document] The HTML
code or the parser of Nokogiri.
@param encoding [String] The enconding of code.
# File lib/hatemile/util/html/nokogiri/nokogiri_html_dom_parser.rb, line 46 def initialize(code_or_parser, encoding = 'UTF-8') Hatemile::Helper.require_not_nil(code_or_parser, encoding) Hatemile::Helper.require_valid_type( code_or_parser, String, Nokogiri::HTML::Document ) Hatemile::Helper.require_valid_type(encoding, String) @document = if code_or_parser.class == String Nokogiri::HTML::Document.parse( code_or_parser, nil, encoding ) else code_or_parser end @results = nil end
Public Instance Methods
@see Hatemile::Util::Html::HTMLDOMParser#clear_parser
# File lib/hatemile/util/html/nokogiri/nokogiri_html_dom_parser.rb, line 200 def clear_parser @document = nil @results = nil end
@see Hatemile::Util::Html::HTMLDOMParser#create_element
# File lib/hatemile/util/html/nokogiri/nokogiri_html_dom_parser.rb, line 182 def create_element(tag) NokogiriHTMLDOMElement.new(@document.create_element(tag)) end
@see Hatemile::Util::Html::HTMLDOMParser#find
# File lib/hatemile/util/html/nokogiri/nokogiri_html_dom_parser.rb, line 69 def find(selector) @results = if selector.is_a?(NokogiriHTMLDOMElement) [selector.get_data] elsif selector.is_a?(Array) selector.map(&:get_data) else @document.css(selector) end self end
@see Hatemile::Util::Html::HTMLDOMParser#find_ancestors
# File lib/hatemile/util/html/nokogiri/nokogiri_html_dom_parser.rb, line 133 def find_ancestors(selector) array = [] selector = [selector] if selector.is_a?(NokogiriHTMLDOMElement) if selector.is_a?(Array) selector.each do |element| native_element = element.get_data @results.each do |result| parents = result.ancestors if parents.include?(native_element) array.push(native_element) break end end end else @results.each do |result| array = array.concat(result.ancestors(selector)) end end @results = array self end
@see Hatemile::Util::Html::HTMLDOMParser#find_children
# File lib/hatemile/util/html/nokogiri/nokogiri_html_dom_parser.rb, line 82 def find_children(selector) array = [] selector = [selector] if selector.is_a?(NokogiriHTMLDOMElement) if selector.is_a?(Array) selector.each do |element| native_element = element.get_data @results.each do |result| if result.children.include?(native_element) array.push(native_element) break end end end else @results.each do |result| result.css(selector).each do |found_element| array.push(found_element) if found_element.parent == result end end end @results = array self end
@see Hatemile::Util::Html::HTMLDOMParser#find_descendants
# File lib/hatemile/util/html/nokogiri/nokogiri_html_dom_parser.rb, line 108 def find_descendants(selector) array = [] selector = [selector] if selector.is_a?(NokogiriHTMLDOMElement) if selector.is_a?(Array) selector.each do |element| native_element = element.get_data parents = native_element.ancestors @results.each do |result| if parents.include?(result) array.push(native_element) break end end end else @results.each do |result| array = array.concat(result.css(selector)) end end @results = array self end
@see Hatemile::Util::Html::HTMLDOMParser#first_result
# File lib/hatemile/util/html/nokogiri/nokogiri_html_dom_parser.rb, line 158 def first_result return nil if @results.nil? || @results.empty? NokogiriHTMLDOMElement.new(@results[0]) end
@see Hatemile::Util::Html::HTMLDOMParser#get_html
# File lib/hatemile/util/html/nokogiri/nokogiri_html_dom_parser.rb, line 188 def get_html NokogiriHTMLDOMElement.new(@document).get_outer_html end
@see Hatemile::Util::Html::HTMLDOMParser#get_parser
# File lib/hatemile/util/html/nokogiri/nokogiri_html_dom_parser.rb, line 194 def get_parser @document end
@see Hatemile::Util::Html::HTMLDOMParser#last_result
# File lib/hatemile/util/html/nokogiri/nokogiri_html_dom_parser.rb, line 165 def last_result return nil if @results.nil? || @results.empty? NokogiriHTMLDOMElement.new(@results[@results.length - 1]) end
@see Hatemile::Util::Html::HTMLDOMParser#list_results
# File lib/hatemile/util/html/nokogiri/nokogiri_html_dom_parser.rb, line 172 def list_results array = [] @results.each do |result| array.push(NokogiriHTMLDOMElement.new(result)) end array end