class SpreadsheetBuilder::CssRule

Public Class Methods

new(rule) click to toggle source
# File lib/spreadsheet_builder/css_rule.rb, line 3
def initialize(rule)
  @rule = rule
end

Public Instance Methods

declarations() click to toggle source
# File lib/spreadsheet_builder/css_rule.rb, line 7
def declarations
  @rule.instance_variable_get(:@declarations)
end
find_selector(tree) click to toggle source
# File lib/spreadsheet_builder/css_rule.rb, line 22
def find_selector(tree) 
  selectors.find { |s| 
    next unless tree.last & s.last == s.last

    s[0..-2].reverse.inject(tree.length - 2) do |i, s_node|
      break false unless i
      tree[0..i].index { |kt_node| kt_node & s_node == s_node }
    end
  }
end
selectors() click to toggle source
# File lib/spreadsheet_builder/css_rule.rb, line 11
def selectors 
  @rule.selectors.map { |s| 
    s = s.split(/[\s>]/).map { |node| node.split('.') }
    s.each do |node| 
      n = node.length
      node[1...n] = node[1...n].map { |k| '.' + k }
      node.delete_if { |k| k.empty? || k == "." }
    end 
  }.sort_by(&:length)
end

Private Instance Methods

method_missing(method, *attrs, &block) click to toggle source
Calls superclass method
# File lib/spreadsheet_builder/css_rule.rb, line 34
def method_missing(method, *attrs, &block)
  if @rule.respond_to?(method)
    @rule.__send__(method, *attrs, &block)
  else
    super
  end
end