class JekyllLazyLoadImage::Translator
Public Class Methods
new(document, site_config)
click to toggle source
# File lib/jekyll-lazy-load-image/translator.rb, line 7 def initialize(document, site_config) @document = document @site_config = site_config end
Public Instance Methods
translate()
click to toggle source
# File lib/jekyll-lazy-load-image/translator.rb, line 12 def translate nokogiri_doc.xpath("//img").each do |node| next if ignore_node?(node) apply_lazy_image_setting(node) inject_class_attr(node) inject_additional_attrs(node) end nokogiri_doc.to_html end
Private Instance Methods
apply_lazy_image_setting(node)
click to toggle source
# File lib/jekyll-lazy-load-image/translator.rb, line 29 def apply_lazy_image_setting(node) node_src_attr = node.attributes["src"] return if node_src_attr.nil? src_value = node_src_attr.value if @site_config.preload_image.empty? node.remove_attribute("src") else node.attributes["src"].value = @site_config.preload_image end node.set_attribute(@site_config.src_attr_name, src_value) end
ignore_node?(node)
click to toggle source
# File lib/jekyll-lazy-load-image/translator.rb, line 25 def ignore_node?(node) !@site_config.ignore_selectors.empty? && node.matches?(*@site_config.ignore_selectors) end
inject_additional_attrs(node)
click to toggle source
# File lib/jekyll-lazy-load-image/translator.rb, line 53 def inject_additional_attrs(node) @site_config.additional_attrs.each do |key, value| node.set_attribute(key, value) end end
inject_class_attr(node)
click to toggle source
# File lib/jekyll-lazy-load-image/translator.rb, line 43 def inject_class_attr(node) class_value = node.attributes["class"]&.value return if class_value.nil? && @site_config.class_attr_values.empty? node.set_attribute("class", "") if class_value.nil? node_class_attr = node.attributes["class"] class_array = [node_class_attr.value, @site_config.class_attr_values].flatten node_class_attr.value = normalize_class_array(class_array).join(" ") end
nokogiri_doc()
click to toggle source
# File lib/jekyll-lazy-load-image/translator.rb, line 59 def nokogiri_doc @nokogiri_doc ||= Nokogiri::HTML(@document) end
normalize_class_array(array)
click to toggle source
# File lib/jekyll-lazy-load-image/translator.rb, line 63 def normalize_class_array(array) array.compact.uniq.map(&:strip).reject(&:empty?) end