class Sass::Tree::RootNode
Public Instance Methods
render()
click to toggle source
# File lib/xass.rb, line 50 def render old_render.split('/*').map { |x| next x unless x.match(/^ line [0-9]+, /) a, b = x.split("\n", 2) m = a.match(/#{Rails.root}\/app\/assets\/stylesheets\/([^. ]+)\./) d = "#{a}\n#{b}" next d unless m p = class_prefix(m[1]) next d unless p selector = class_replaced_selector(b.split("\n")[0].strip[0...-1].strip, p) "#{a}\n#{selector} {\n#{b.split("\n", 2)[1]}" }.join('/*') end
Also aliased as: old_render
Private Instance Methods
class_prefix(name)
click to toggle source
# File lib/xass.rb, line 72 def class_prefix(name) names = name.split('/') names = names[1..(names.index { |x| x.start_with?('!') } || -1)] p = names.join('__') p.empty? ? nil : p end
class_replaced_selector(selector, class_prefix)
click to toggle source
# File lib/xass.rb, line 66 def class_replaced_selector(selector, class_prefix) doc = CSSPool.CSS("#{selector} {}") replace_class(doc, class_prefix) doc_to_selector(doc) end
doc_to_selector(doc)
click to toggle source
# File lib/xass.rb, line 96 def doc_to_selector(doc) doc.to_css.split("\n")[0][0...-1].strip.gsub(/\\[0-9a-f]{6}/) do |c| [c[1..-1].tr('0', '').to_i(16)].pack('U') end end
extended_selector(class_prefix, klass)
click to toggle source
# File lib/xass.rb, line 102 def extended_selector(class_prefix, klass) if klass == 'root' class_prefix elsif klass.start_with?('_') klass[1..-1] else "#{class_prefix}___#{klass}" end end
replace_class(doc, class_prefix)
click to toggle source
# File lib/xass.rb, line 79 def replace_class(doc, class_prefix) doc.rule_sets[0].selectors.map do |selector| selector.simple_selectors.each do |simple_selector| simple_selector.additional_selectors.each do |additional_selector| case additional_selector when CSSPool::Selectors::Class additional_selector.name = extended_selector(class_prefix, additional_selector.name) when CSSPool::Selectors::PseudoClass next unless additional_selector.extra extra = class_replaced_selector(additional_selector.extra, class_prefix) rescue nil additional_selector.extra = extra if extra end end end end end