Class: UnderOs::Parser::CSS

Inherits:
Object show all
Defined in:
lib/under_os/parser/css.rb

Instance Method Summary collapse

Instance Method Details

#normalized_values(key, value) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/under_os/parser/css.rb', line 24

def normalized_values(key, value)
  key   = key.camelize.to_sym
  value = value.strip.gsub(/px$/, '')
  value = value.gsub(/^('|")(.*?)\1$/, '\2')
  value = value.to_f if value =~ /^[\-\d\.]+$/

  if key == :background && value =~ /^[\S]+$/
    key = :backgroundColor
  end


  {key => value}
end

#parse(style) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
# File 'lib/under_os/parser/css.rb', line 2

def parse(style)
  style = style.gsub(/\/\*[\s\S]+?\*\//, '').strip

  {}.tap do |result|
    style.scan(/(\A|\})([a-z0-9_\*\-\.\s#:,]+)\{([^}]+)/).map do |rule|
      values = parse_styles(rule[2])

      rule[1].split(',').each do |css_rule|
        result[css_rule.gsub(/\s+/, ' ').strip] = values
      end
    end
  end
end

#parse_styles(styles) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/under_os/parser/css.rb', line 16

def parse_styles(styles)
  {}.tap do |hash|
    styles.scan(/([a-z\-]+)\s*:\s*([^;]+)\s*/).each do |param|
      hash.merge! normalized_values(param[0], param[1])
    end
  end
end