class Stylesheet::CssRuleList

Public Class Methods

new(rules, parent = nil) click to toggle source
# File lib/stylesheet/css_rule_list.rb, line 7
def initialize(rules, parent = nil)
  @rules = parse(rules, parent)
end

Public Instance Methods

item(index) click to toggle source
# File lib/stylesheet/css_rule_list.rb, line 11
def item(index)
  @rules[index]
end

Private Instance Methods

parse(rules, parent) click to toggle source
# File lib/stylesheet/css_rule_list.rb, line 17
def parse(rules, parent)
  # clean out comments
  rules = rules.gsub(/\/\*[\s\S]*?\*\//, '').gsub("/*", "").gsub("*/", "")
  
  # clean extraneous whitespace
  rules = rules.to_s.gsub(/\s+/m, " ").gsub(/([\};])\s/, '\1')

  directive_re = "@.+?;"
  rules_re     = ".+?\{.*?\}"
  split_rules = rules.scan(/(#{directive_re}|#{rules_re})/im).map {|r| r[0] }

  split_rules.map do |css_text| 
    CssRule.factory(:css_text => css_text, :parent_style_sheet => parent)
  end
end