Sha256: 9ad57ac5a3e74adf5d744f6b4eab070478aecf8bb498860cca450a431e3e363e
Contents?: true
Size: 1.27 KB
Versions: 5
Compression:
Stored size: 1.27 KB
Contents
require 'rubygems' require 'nokogiri' require 'css_inliner/extractor' require 'css_inliner/csspool' module CSSInliner class Inliner # @param [Nokogiri::XML::Document] document # @param [String] basedir def initialize(document, basedir) @document = document @basedir = basedir @extractor = Extractor.new @document, @basedir end def inline original_styles = {} @document.search('.//*[@style]').each do |elem| original_styles[elem] = elem['style'] elem.remove_attribute('style') end css = @extractor.extract css.sorted_selectors.each do |selector| sel = selector.to_s next if sel =~ /@|:/ sel = 'body' if sel == '*' or sel == 'html' @document.css(sel).each do |elem| base = CSSPool.CSS("* {#{elem['style']}}").rule_sets.first.declarations elem['style'] = CSSPool::CSS.update_declarations(base, selector.declarations).join end end original_styles.each_pair do |elem, style| base = CSSPool.CSS("* {#{elem['style']}}").rule_sets.first.declarations orig = CSSPool.CSS("* {#{style}}").rule_sets.first.declarations elem['style'] = CSSPool::CSS.update_declarations(base, orig).join end @document end end end
Version data entries
5 entries across 5 versions & 1 rubygems