Sha256: f87b421e5ca4c93c97ec87269bfbee2573ed9c68ac65aaad469561b41df56063

Contents?: true

Size: 1.7 KB

Versions: 12

Compression:

Stored size: 1.7 KB

Contents

require 'nokogiri'

module MetaInspector
  ##
  # Parses the document with Nokogiri.
  #
  # Delegates the parsing of the different elements to specialized parsers,
  # passing itself as a reference for coordination purposes
  #
  class Parser
    def initialize(document, options = {})
      @document        = document
      @head_links_parser = MetaInspector::Parsers::HeadLinksParser.new(self)
      @meta_tag_parser = MetaInspector::Parsers::MetaTagsParser.new(self)
      @links_parser    = MetaInspector::Parsers::LinksParser.new(self)
      @download_images = options[:download_images]
      @images_parser   = MetaInspector::Parsers::ImagesParser.new(self, download_images: @download_images)
      @texts_parser    = MetaInspector::Parsers::TextsParser.new(self)

      parsed           # parse early so we can fail early
    end

    extend Forwardable
    delegate [:url, :scheme, :host]                                                        => :@document
    delegate [:meta_tags, :meta_tag, :meta, :charset]                                      => :@meta_tag_parser
    delegate [:head_links, :stylesheets, :canonicals, :feeds, :feed]                       => :@head_links_parser
    delegate [:links, :base_url]                                                           => :@links_parser
    delegate :images                                                                       => :@images_parser
    delegate [:title, :best_title, :author, :best_author, :description, :best_description, 
              :h1, :h2, :h3, :h4, :h5, :h6]                                                => :@texts_parser

    # Returns the whole parsed document
    def parsed
      @parsed ||= Nokogiri::HTML(@document.to_s)
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
metainspector-5.15.0 lib/meta_inspector/parser.rb
metainspector-5.14.0 lib/meta_inspector/parser.rb
metainspector-5.13.1 lib/meta_inspector/parser.rb
metainspector-5.13.0 lib/meta_inspector/parser.rb
metainspector-5.12.1 lib/meta_inspector/parser.rb
metainspector-5.12.0 lib/meta_inspector/parser.rb
metainspector-5.11.2 lib/meta_inspector/parser.rb
metainspector-5.11.1 lib/meta_inspector/parser.rb
metainspector-5.11.0 lib/meta_inspector/parser.rb
metainspector-5.10.1 lib/meta_inspector/parser.rb
metainspector-5.10.0 lib/meta_inspector/parser.rb
metainspector-5.9.0 lib/meta_inspector/parser.rb