Sha256: c11fc5585d21a2cbd8bc353f1dd61a57d5733fddcc5bea6c2191328459909da6

Contents?: true

Size: 1.05 KB

Versions: 8

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true

module ProxyFetcher
  # HTML document abstraction class. Used to work with different HTML parser adapters
  # such as Nokogiri, Oga or a custom one. Stores <i>backend</i< that will handle all
  # the DOM manipulation logic.
  class Document
    # @!attribute [r] backend
    #   @return [Object] Backend object that handles DOM processing
    attr_reader :backend

    # Parses raw HTML data to abstract ProxyFetcher document.
    #
    # @param data [String] HTML
    #
    # @return [ProxyFetcher::Document]
    #   ProxyFetcher document model
    #
    def self.parse(data)
      new(ProxyFetcher.config.adapter_class.parse(data))
    end

    # Initialize abstract ProxyFetcher HTML Document
    #
    # @return [Document]
    #
    def initialize(backend)
      @backend = backend
    end

    # Searches elements by XPath selector.
    #
    # @return [Array<ProxyFetcher::Document::Node>]
    #   collection of nodes
    #
    def xpath(*args)
      backend.xpath(*args).map { |node| backend.proxy_node.new(node) }
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
proxy_fetcher-0.17.0 lib/proxy_fetcher/document.rb
proxy_fetcher-0.16.0 lib/proxy_fetcher/document.rb
proxy_fetcher-0.15.1 lib/proxy_fetcher/document.rb
proxy_fetcher-0.15.0 lib/proxy_fetcher/document.rb
proxy_fetcher-0.14.0 lib/proxy_fetcher/document.rb
proxy_fetcher-0.13.0 lib/proxy_fetcher/document.rb
proxy_fetcher-0.12.0 lib/proxy_fetcher/document.rb
proxy_fetcher-0.11.0 lib/proxy_fetcher/document.rb