Class: InlineStyle
- Inherits:
-
Object
- Object
- InlineStyle
- Defined in:
- lib/inline-style.rb,
lib/inline-style/rule.rb,
lib/inline-style/version.rb,
lib/inline-style/csspool_wrapper.rb,
lib/inline-style/css_parser_wrapper.rb
Defined Under Namespace
Modules: Mail, Rack Classes: CSSPoolWrapper, CssParserWrapper, Rule
Constant Summary collapse
- CSSParser =
if const_defined? :CSSPool require 'inline-style/csspool_wrapper' CSSPoolWrapper else require 'inline-style/css_parser_wrapper' CssParserWrapper end
- VERSION =
'0.0.2'
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(html, opts = {}) ⇒ InlineStyle
constructor
A new instance of InlineStyle.
- #process ⇒ Object
Constructor Details
#initialize(html, opts = {}) ⇒ InlineStyle
Returns a new instance of InlineStyle.
29 30 31 32 33 34 35 36 37 |
# File 'lib/inline-style.rb', line 29 def initialize html, opts = {} @stylesheets_path = opts[:stylesheets_path] || ENV['DOCUMENT_ROOT'] || '.' @html = html begin @dom = String === html ? Nokogiri.HTML(html) : html rescue StandardError @dom = html end end |
Class Method Details
.process(html, opts = {}) ⇒ Object
25 26 27 |
# File 'lib/inline-style.rb', line 25 def self.process html, opts = {} new(html, opts).process end |
Instance Method Details
#process ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/inline-style.rb', line 39 def process nodes_with_rules.each_pair do |node, rules| rules = rules.sort_by{ |sel| "#{sel.specificity}%04d" % rules.index(sel) } styles = [] rules.each do |rule| next if rule.dynamic_pseudo_class rule.declarations.each do |declaration| if defined = styles.assoc(declaration.first) styles[styles.index(defined)] = declaration # overrides defined declaration else styles << declaration end end end style = styles.map{ |declaration| declaration.join(': ') }.join('; ') node['style'] = "#{style};" unless style.empty? end pre_parsed? ? @dom : @dom.to_s end |