class Slimmer::Processors::BodyInserter
Public Class Methods
new(source_id = "wrapper", destination_id = "wrapper", headers = {})
click to toggle source
# File lib/slimmer/processors/body_inserter.rb, line 3 def initialize(source_id = "wrapper", destination_id = "wrapper", headers = {}) @source_selector = "#" + source_id @destination_selector = "#" + destination_id @headers = headers end
Public Instance Methods
filter(src, dest)
click to toggle source
# File lib/slimmer/processors/body_inserter.rb, line 9 def filter(src, dest) source_markup = src.at_css(@source_selector) destination_markup = dest.at_css(@destination_selector) css_classes = [] css_classes << source_markup.attributes["class"].to_s.split(/ +/) if source_markup.has_attribute?("class") css_classes << destination_markup.attributes["class"].to_s.split(/ +/) if destination_markup.has_attribute?("class") body = Nokogiri::HTML.fragment(source_markup.to_html) dest.at_css(@destination_selector).replace(body) dest.at_css(@destination_selector).set_attribute("class", css_classes.flatten.uniq.join(" ")) if is_gem_layout? && css_classes.any? end
Private Instance Methods
is_gem_layout?()
click to toggle source
# File lib/slimmer/processors/body_inserter.rb, line 24 def is_gem_layout? @headers[Slimmer::Headers::TEMPLATE_HEADER]&.starts_with?("gem_layout") end