Sha256: 484e131d0f23b9c164d6ce6e2ed14dc1cd88599eb7e3e4a58a201cd10ba52f8e

Contents?: true

Size: 1.58 KB

Versions: 13

Compression:

Stored size: 1.58 KB

Contents

require 'delegate'
require 'link_thumbnailer/models/title'
require 'link_thumbnailer/models/description'
require 'link_thumbnailer/models/image'
require 'link_thumbnailer/models/video'

module LinkThumbnailer
  module Scrapers
    class Base < ::SimpleDelegator

      attr_reader :config, :document, :website, :attribute_name

      def initialize(document, website = nil)
        @config   = ::LinkThumbnailer.page.config
        @document = document
        @website  = website

        super(config)
      end

      def call(attribute_name)
        return false unless website.present?
        return false unless applicable?

        @attribute_name = attribute_name

        website.send("#{attribute_name}=", value)
        website
      end

      def applicable?
        true
      end

      def value
        fail NotImplementedError
      end

      private

      def meta_xpath(options = {})
        meta_xpaths(options).first
      end

      def meta_xpaths(options = {})
        key       = options.fetch(:key, :property)
        value     = options.fetch(:value, :content)
        attribute = options.fetch(:attribute, attribute_name)

        document.xpath("//meta[translate(@#{key},'#{abc.upcase}','#{abc}') = '#{attribute}' and @#{value}]")
      end

      def abc
        'abcdefghijklmnopqrstuvwxyz'
      end

      def model_class
        "::LinkThumbnailer::Models::#{attribute_name.to_s.camelize}".constantize
      end

      def modelize(node, text = nil)
        model_class.new(node, text)
      end

    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
link_thumbnailer-3.2.0 lib/link_thumbnailer/scrapers/base.rb
link_thumbnailer-3.1.2 lib/link_thumbnailer/scrapers/base.rb
link_thumbnailer-3.1.1 lib/link_thumbnailer/scrapers/base.rb
link_thumbnailer-3.1.0 lib/link_thumbnailer/scrapers/base.rb
link_thumbnailer-3.0.3 lib/link_thumbnailer/scrapers/base.rb
link_thumbnailer-3.0.2 lib/link_thumbnailer/scrapers/base.rb
link_thumbnailer-3.0.1 lib/link_thumbnailer/scrapers/base.rb
link_thumbnailer-3.0.0 lib/link_thumbnailer/scrapers/base.rb
link_thumbnailer-2.6.1 lib/link_thumbnailer/scrapers/base.rb
link_thumbnailer-2.6.0 lib/link_thumbnailer/scrapers/base.rb
link_thumbnailer-2.5.2 lib/link_thumbnailer/scrapers/base.rb
link_thumbnailer-2.5.1 lib/link_thumbnailer/scrapers/base.rb
link_thumbnailer-2.5.0 lib/link_thumbnailer/scrapers/base.rb