css_parser 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,17 +22,17 @@ module CssParser
22
22
 
23
23
  RE_URI = Regexp.new('(url\([\s]*([\s]*' + RE_STRING.to_s + '[\s]*)[\s]*\))|(url\([\s]*([!#$%&*\-~]|' + RE_NON_ASCII.to_s + '|' + RE_ESCAPE.to_s + ')*[\s]*)\)', Regexp::IGNORECASE | Regexp::EXTENDED | Regexp::MULTILINE, 'n')
24
24
  URI_RX = /url\(("([^"]*)"|'([^']*)'|([^)]*))\)/im
25
- RE_GRADIENT = /[a-z\-]*gradient\([a-z ,#%0-9\(\)]*\)$/im
25
+ RE_GRADIENT = /[-a-z]*gradient\([-a-z0-9 .,#%()]*\)/im
26
26
 
27
27
  # Initial parsing
28
28
  RE_AT_IMPORT_RULE = /\@import[\s]+(url\()?["''"]?(.[^'"\s"']*)["''"]?\)?([\w\s\,^\])]*)\)?;?/
29
-
29
+
30
30
  #--
31
31
  #RE_AT_MEDIA_RULE = Regexp.new('(\"(.[^\n\r\f\\"]*|\\\\' + RE_NL.to_s + '|' + RE_ESCAPE.to_s + ')*\")')
32
-
32
+
33
33
  #RE_AT_IMPORT_RULE = Regexp.new('@import[\s]*(' + RE_STRING.to_s + ')([\w\s\,]*)[;]?', Regexp::IGNORECASE) -- should handle url() even though it is not allowed
34
34
  #++
35
- IMPORTANT_IN_PROPERTY_RX = /[\s]*!important[\s]*/i
35
+ IMPORTANT_IN_PROPERTY_RX = /[\s]*!important\b[\s]*/i
36
36
 
37
37
  RE_INSIDE_OUTSIDE = regex_possible_values 'inside', 'outside'
38
38
  RE_SCROLL_FIXED = regex_possible_values 'scroll', 'fixed'
@@ -52,8 +52,8 @@ module CssParser
52
52
  FONT_UNITS_RX = /(([x]+\-)*small|medium|large[r]*|auto|inherit|([0-9]+|[0-9]*\.[0-9]+)(e[mx]+|px|[cm]+m|p[tc+]|in|\%)*)/i
53
53
  RE_BORDER_STYLE = /([\s]*^)?(none|hidden|dotted|dashed|solid|double|dot-dash|dot-dot-dash|wave|groove|ridge|inset|outset)([\s]*$)?/imx
54
54
  RE_BORDER_UNITS = Regexp.union(BOX_MODEL_UNITS_RX, /(thin|medium|thick)/i)
55
-
56
-
55
+
56
+
57
57
  # Patterns for specificity calculations
58
58
  NON_ID_ATTRIBUTES_AND_PSEUDO_CLASSES_RX= /
59
59
  (\.[\w]+) # classes
@@ -75,7 +75,7 @@ module CssParser
75
75
  /ix
76
76
  ELEMENTS_AND_PSEUDO_ELEMENTS_RX = /
77
77
  ((^|[\s\+\>\~]+)[\w]+ # elements
78
- |
78
+ |
79
79
  \:{1,2}( # pseudo-elements
80
80
  after|before
81
81
  |first-letter|first-line
@@ -466,11 +466,17 @@ module CssParser
466
466
 
467
467
  block.gsub!(/(^[\s]*)|([\s]*$)/, '')
468
468
 
469
+ continuation = ''
469
470
  block.split(/[\;$]+/m).each do |decs|
470
- if matches = decs.match(/(.[^:]*)\:(.[^;]*)(;|\Z)/i)
471
+ decs = continuation + decs
472
+ if decs =~ /\([^)]*\Z/ # if it has an unmatched parenthesis
473
+ continuation = decs + ';'
474
+
475
+ elsif matches = decs.match(/(.[^:]*)\s*:\s*(.+)(;?\s*\Z)/i)
471
476
  property, value, end_of_declaration = matches.captures
472
477
 
473
478
  add_declaration!(property, value)
479
+ continuation = ''
474
480
  end
475
481
  end
476
482
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: css_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -52,7 +52,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
52
52
  version: '0'
53
53
  segments:
54
54
  - 0
55
- hash: 3425931588029901136
55
+ hash: -3236645012416092950
56
56
  required_rubygems_version: !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
@@ -61,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
61
61
  version: '0'
62
62
  segments:
63
63
  - 0
64
- hash: 3425931588029901136
64
+ hash: -3236645012416092950
65
65
  requirements: []
66
66
  rubyforge_project:
67
67
  rubygems_version: 1.8.25