Sha256: e6431ea13ec953f5726a4038cae28f4fa2a1ebc2705ac83fbec507e3de41b72a
Contents?: true
Size: 1.15 KB
Versions: 3
Compression:
Stored size: 1.15 KB
Contents
# frozen_string_literal: true require 'grover/utils' require 'grover/options_fixer' class Grover # # Build options from Grover.configuration, meta_options, and passed-in options # class OptionsBuilder < Hash def initialize(options, url) super() @url = url combined = grover_configuration Utils.deep_merge! combined, Utils.deep_stringify_keys(options) Utils.deep_merge! combined, meta_options unless url_source? update OptionsFixer.new(combined).run end private def grover_configuration Utils.deep_stringify_keys Grover.configuration.options end # # Extract out options from meta tags in the source - based on code from PDFKit project # def meta_options meta_opts = {} meta_tags.each do |meta| tag_name = meta['name'] && meta['name'][/#{Grover.configuration.meta_tag_prefix}([a-z_-]+)/, 1] next unless tag_name Utils.deep_assign meta_opts, tag_name.split('-'), meta['content'] end meta_opts end def meta_tags Nokogiri::HTML(@url).xpath('//meta') end def url_source? @url.match(/\Ahttp/i) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
grover-1.1.8 | lib/grover/options_builder.rb |
grover-1.1.7 | lib/grover/options_builder.rb |
grover-1.1.6 | lib/grover/options_builder.rb |