Class: UnderOs::Parser::CSS
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 |