Sha256: be69e60edd179a751bb93d9a0051365622cc18115ed2ab39ef5053f976832c70
Contents?: true
Size: 1.57 KB
Versions: 2
Compression:
Stored size: 1.57 KB
Contents
# frozen_string_literal: true 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 string-length(@#{value}) > 0]") 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
link_thumbnailer-3.4.0 | lib/link_thumbnailer/scrapers/base.rb |
link_thumbnailer-3.3.2 | lib/link_thumbnailer/scrapers/base.rb |