csspool 3.0.1 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,13 @@
1
+ == 3.0.2
2
+
3
+ * New Features
4
+
5
+ * Support IE Safe Hacks [stereobooster]
6
+
7
+ * Bugfixes
8
+
9
+ * Fix #23 - set up CSSPool.CSS so it can read files. [Mike Tierney]
10
+
1
11
  == 3.0.1
2
12
 
3
13
  * New Features
data/Gemfile ADDED
@@ -0,0 +1,16 @@
1
+ # -*- ruby -*-
2
+
3
+ # DO NOT EDIT THIS FILE. Instead, edit Rakefile, and run `rake bundler:gemfile`.
4
+
5
+ source :gemcutter
6
+
7
+
8
+ gem "rdoc", "~>3.10", :group => [:development, :test]
9
+ gem "racc", ">=0", :group => [:development, :test]
10
+ gem "rexical", ">=0", :group => [:development, :test]
11
+ gem "hoe-git", ">=0", :group => [:development, :test]
12
+ gem "hoe-gemspec", ">=0", :group => [:development, :test]
13
+ gem "hoe-bundler", ">=0", :group => [:development, :test]
14
+ gem "hoe", "~>3.0", :group => [:development, :test]
15
+
16
+ # vim: syntax=ruby
data/Gemfile.lock ADDED
@@ -0,0 +1,29 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ hoe (3.1.0)
5
+ rake (~> 0.8)
6
+ hoe-bundler (1.2.0)
7
+ hoe (>= 2.2.0)
8
+ hoe-gemspec (1.0.0)
9
+ hoe (>= 2.2.0)
10
+ hoe-git (1.5.0)
11
+ hoe (>= 2.2.0)
12
+ json (1.7.5)
13
+ racc (1.4.9)
14
+ rake (0.9.2.2)
15
+ rdoc (3.12)
16
+ json (~> 1.4)
17
+ rexical (1.0.5)
18
+
19
+ PLATFORMS
20
+ ruby
21
+
22
+ DEPENDENCIES
23
+ hoe (~> 3.0)
24
+ hoe-bundler
25
+ hoe-gemspec
26
+ hoe-git
27
+ racc
28
+ rdoc (~> 3.10)
29
+ rexical
data/Manifest.txt CHANGED
@@ -1,5 +1,7 @@
1
1
  .autotest
2
2
  CHANGELOG.rdoc
3
+ Gemfile
4
+ Gemfile.lock
3
5
  Manifest.txt
4
6
  README.rdoc
5
7
  Rakefile
@@ -49,6 +51,7 @@ test/css/test_document.rb
49
51
  test/css/test_import_rule.rb
50
52
  test/css/test_parser.rb
51
53
  test/css/test_tokenizer.rb
54
+ test/files/test.css
52
55
  test/helper.rb
53
56
  test/sac/test_parser.rb
54
57
  test/sac/test_properties.rb
@@ -2,9 +2,16 @@ module CSSPool
2
2
  module CSS
3
3
  class Document < Node
4
4
  def self.parse string
5
+ # If a File object gets passed in, via functions like File.open
6
+ # or Kernel::open
7
+ if string.respond_to? :read
8
+ string = string.read
9
+ end
10
+
5
11
  unless string && string.length > 0
6
12
  return CSSPool::CSS::Document.new
7
13
  end
14
+
8
15
  handler = CSSPool::CSS::DocumentHandler.new
9
16
  parser = CSSPool::SAC::Parser.new(handler)
10
17
  parser.parse(string)
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.4.8
3
+ # This file is automatically generated by Racc 1.4.9
4
4
  # from Racc grammer file "".
5
5
  #
6
6
 
@@ -9,7 +9,7 @@ module CSSPool
9
9
  module CSS
10
10
  class Parser < Racc::Parser
11
11
 
12
- module_eval(<<'...end parser.y/module_eval...', 'parser.y', 317)
12
+ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 318)
13
13
 
14
14
  def numeric thing
15
15
  thing = thing.gsub(/[^\d.]/, '')
@@ -50,138 +50,138 @@ end
50
50
  ##### State transition tables begin ###
51
51
 
52
52
  racc_action_table = [
53
- 8, 9, 63, 48, 21, 15, 53, 45, 3, 22,
54
- 27, 29, 8, 9, 75, 64, 21, 15, 48, 54,
55
- 55, 22, 27, 29, 36, 84, 8, 9, 70, 83,
56
- 21, 15, 13, 28, 30, 22, 27, 29, 85, 27,
57
- 29, 82, 21, 74, 13, 28, 30, 22, 27, 29,
58
- 21, 15, 37, 70, 71, 22, 27, 29, 13, 28,
59
- 30, 21, 28, 30, 112, 73, 22, 27, 29, 21,
60
- 15, 28, 30, 72, 22, 27, 29, 21, 15, 28,
61
- 30, 69, 22, 27, 29, 27, 29, 21, 15, 119,
62
- 28, 30, 22, 27, 29, 121, 65, 13, 28, 30,
63
- 27, 29, 67, 42, 68, 13, 28, 30, 28, 30,
64
- 99, 42, 111, 62, 43, 13, 28, 30, 97, 27,
65
- 29, 27, 29, 28, 30, 96, 118, 110, 117, 101,
66
- 109, 103, 102, 104, 105, 106, 107, 108, 98, 99,
67
- 128, 111, 28, 30, 28, 30, 129, 97, 81, 78,
68
- 79, 80, 130, 115, 96, 116, 110, 131, 101, 109,
69
- 103, 102, 104, 105, 106, 107, 108, 98, 99, 132,
70
- 111, 136, 114, 61, 113, 51, 97, 50, 137, 138,
71
- 139, 140, 141, 96, 142, 110, 121, 101, 109, 103,
72
- 102, 104, 105, 106, 107, 108, 98, 99, 34, 111,
73
- 145, 123, 121, 31, 121, 97, nil, nil, 125, nil,
74
- nil, nil, 96, nil, 110, 124, 101, 109, 103, 102,
75
- 104, 105, 106, 107, 108, 98, 99, nil, 111, nil,
76
- nil, nil, nil, nil, 97, nil, nil, nil, nil, nil,
77
- nil, 96, nil, 110, nil, 101, 109, 103, 102, 104,
78
- 105, 106, 107, 108, 98, 99, nil, 111, 88, nil,
79
- nil, nil, nil, 97, nil, nil, nil, nil, nil, nil,
80
- 96, nil, 110, nil, 101, 109, 103, 102, 104, 105,
81
- 106, 107, 108, 98, 99, nil, 111, nil, nil, nil,
82
- nil, nil, 97, nil, nil, nil, nil, nil, nil, 96,
83
- nil, 110, nil, 101, 109, 103, 102, 104, 105, 106,
84
- 107, 108, 98, 110, nil, 101, 109, 103, 102, 104,
85
- 105, 106, 107, 108 ]
53
+ 13, 17, 41, 52, 22, 25, 61, 56, 51, 4,
54
+ 6, 9, 13, 17, 83, 42, 22, 25, 3, 62,
55
+ 63, 4, 6, 9, 46, 94, 13, 17, 66, 81,
56
+ 22, 25, 8, 10, 14, 4, 6, 9, 80, 73,
57
+ 6, 9, 22, 82, 8, 10, 14, 4, 6, 9,
58
+ 22, 74, 47, 66, 67, 4, 6, 9, 8, 10,
59
+ 14, 22, 25, 10, 14, 93, 4, 6, 9, 22,
60
+ 25, 10, 14, 79, 4, 6, 9, 22, 25, 10,
61
+ 14, 78, 4, 6, 9, 6, 9, 22, 25, 8,
62
+ 10, 14, 4, 6, 9, 52, 72, 8, 10, 14,
63
+ 51, 34, 121, 105, 35, 109, 10, 14, 10, 14,
64
+ 89, 98, 90, 6, 9, 8, 10, 14, 116, 91,
65
+ 119, 92, 97, 100, 102, 104, 107, 110, 112, 115,
66
+ 118, 120, 105, 122, 109, 143, 10, 14, 123, 87,
67
+ 98, 88, 6, 9, 6, 9, 124, 116, 125, 119,
68
+ 126, 97, 100, 102, 104, 107, 110, 112, 115, 118,
69
+ 120, 105, 127, 109, 114, 10, 14, 10, 14, 98,
70
+ 68, 69, 70, 71, 86, 133, 116, 134, 119, 135,
71
+ 97, 100, 102, 104, 107, 110, 112, 115, 118, 120,
72
+ 105, 136, 109, 76, 34, 77, 137, 59, 98, 57,
73
+ 40, 141, 37, 36, 141, 116, 147, 119, 31, 97,
74
+ 100, 102, 104, 107, 110, 112, 115, 118, 120, 105,
75
+ 141, 109, 141, nil, nil, nil, nil, 98, nil, nil,
76
+ nil, nil, nil, nil, 116, nil, 119, nil, 97, 100,
77
+ 102, 104, 107, 110, 112, 115, 118, 120, 105, nil,
78
+ 109, nil, 131, nil, nil, nil, 98, nil, nil, 129,
79
+ nil, nil, nil, 116, nil, 119, 128, 97, 100, 102,
80
+ 104, 107, 110, 112, 115, 118, 120, 105, nil, 109,
81
+ nil, nil, nil, nil, nil, 98, nil, nil, nil, nil,
82
+ nil, nil, 116, nil, 119, nil, 97, 100, 102, 104,
83
+ 107, 110, 112, 115, 118, 120, 119, nil, 97, 100,
84
+ 102, 104, 107, 110, 112, 115, 118 ]
86
85
 
87
86
  racc_action_check = [
88
- 6, 6, 30, 14, 6, 6, 18, 14, 1, 6,
89
- 6, 6, 2, 2, 47, 30, 2, 2, 73, 18,
90
- 18, 2, 2, 2, 9, 66, 5, 5, 66, 64,
91
- 5, 5, 6, 6, 6, 5, 5, 5, 70, 23,
92
- 23, 64, 52, 47, 2, 2, 2, 52, 52, 52,
93
- 15, 15, 9, 41, 41, 15, 15, 15, 5, 5,
94
- 5, 51, 23, 23, 75, 46, 51, 51, 51, 12,
95
- 12, 52, 52, 44, 12, 12, 12, 10, 10, 15,
96
- 15, 40, 10, 10, 10, 25, 25, 11, 11, 83,
97
- 51, 51, 11, 11, 11, 87, 34, 12, 12, 12,
98
- 26, 26, 35, 35, 35, 10, 10, 10, 25, 25,
99
- 126, 13, 126, 29, 13, 11, 11, 11, 126, 19,
100
- 19, 24, 24, 26, 26, 126, 80, 126, 80, 126,
101
- 126, 126, 126, 126, 126, 126, 126, 126, 126, 136,
102
- 90, 136, 19, 19, 24, 24, 92, 136, 62, 62,
103
- 62, 62, 93, 79, 136, 79, 136, 94, 136, 136,
104
- 136, 136, 136, 136, 136, 136, 136, 136, 112, 95,
105
- 112, 112, 78, 28, 78, 17, 112, 16, 113, 114,
106
- 115, 116, 117, 112, 118, 112, 122, 112, 112, 112,
107
- 112, 112, 112, 112, 112, 112, 112, 89, 8, 89,
108
- 133, 89, 135, 3, 147, 89, nil, nil, 89, nil,
109
- nil, nil, 89, nil, 89, 89, 89, 89, 89, 89,
110
- 89, 89, 89, 89, 89, 89, 88, nil, 88, nil,
111
- nil, nil, nil, nil, 88, nil, nil, nil, nil, nil,
112
- nil, 88, nil, 88, nil, 88, 88, 88, 88, 88,
113
- 88, 88, 88, 88, 88, 74, nil, 74, 74, nil,
114
- nil, nil, nil, 74, nil, nil, nil, nil, nil, nil,
115
- 74, nil, 74, nil, 74, 74, 74, 74, 74, 74,
116
- 74, 74, 74, 74, 96, nil, 96, nil, nil, nil,
117
- nil, nil, 96, nil, nil, nil, nil, nil, nil, 96,
118
- nil, 96, nil, 96, 96, 96, 96, 96, 96, 96,
119
- 96, 96, 96, 100, nil, 100, 100, 100, 100, 100,
120
- 100, 100, 100, 100 ]
87
+ 29, 29, 14, 21, 29, 29, 28, 21, 21, 29,
88
+ 29, 29, 2, 2, 55, 14, 2, 2, 1, 28,
89
+ 28, 2, 2, 2, 17, 75, 27, 27, 75, 54,
90
+ 27, 27, 29, 29, 29, 27, 27, 27, 53, 42,
91
+ 15, 15, 59, 55, 2, 2, 2, 59, 59, 59,
92
+ 64, 42, 17, 33, 33, 64, 64, 64, 27, 27,
93
+ 27, 19, 19, 15, 15, 73, 19, 19, 19, 16,
94
+ 16, 59, 59, 51, 16, 16, 16, 25, 25, 64,
95
+ 64, 49, 25, 25, 25, 20, 20, 12, 12, 19,
96
+ 19, 19, 12, 12, 12, 80, 40, 16, 16, 16,
97
+ 80, 8, 83, 116, 8, 116, 25, 25, 20, 20,
98
+ 70, 116, 70, 11, 11, 12, 12, 12, 116, 71,
99
+ 116, 71, 116, 116, 116, 116, 116, 116, 116, 116,
100
+ 116, 116, 121, 87, 121, 121, 11, 11, 88, 69,
101
+ 121, 69, 5, 5, 18, 18, 89, 121, 90, 121,
102
+ 91, 121, 121, 121, 121, 121, 121, 121, 121, 121,
103
+ 121, 82, 92, 82, 82, 5, 5, 18, 18, 82,
104
+ 36, 36, 36, 36, 66, 99, 82, 103, 82, 106,
105
+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
106
+ 132, 108, 132, 45, 45, 45, 111, 26, 132, 24,
107
+ 13, 117, 10, 9, 139, 132, 140, 132, 3, 132,
108
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 143,
109
+ 144, 143, 148, nil, nil, nil, nil, 143, nil, nil,
110
+ nil, nil, nil, nil, 143, nil, 143, nil, 143, 143,
111
+ 143, 143, 143, 143, 143, 143, 143, 143, 96, nil,
112
+ 96, nil, 96, nil, nil, nil, 96, nil, nil, 96,
113
+ nil, nil, nil, 96, nil, 96, 96, 96, 96, 96,
114
+ 96, 96, 96, 96, 96, 96, 96, 114, nil, 114,
115
+ nil, nil, nil, nil, nil, 114, nil, nil, nil, nil,
116
+ nil, nil, 114, nil, 114, nil, 114, 114, 114, 114,
117
+ 114, 114, 114, 114, 114, 114, 113, nil, 113, 113,
118
+ 113, 113, 113, 113, 113, 113, 113 ]
121
119
 
122
120
  racc_action_pointer = [
123
- nil, 8, 10, 203, nil, 24, -2, nil, 194, 20,
124
- 71, 81, 63, 105, -3, 44, 168, 167, -1, 107,
125
- nil, nil, nil, 27, 109, 73, 88, nil, 167, 107,
126
- -4, nil, nil, nil, 91, 97, nil, nil, nil, nil,
127
- 71, 45, nil, nil, 63, nil, 60, 7, nil, nil,
128
- nil, 55, 36, nil, nil, nil, nil, nil, nil, nil,
129
- nil, nil, 134, nil, 23, nil, 20, nil, nil, nil,
130
- 32, nil, nil, 12, 251, 28, nil, nil, 168, 149,
131
- 122, nil, nil, 71, nil, nil, nil, 62, 222, 193,
132
- 133, nil, 139, 145, 150, 162, 280, nil, nil, nil,
133
- 292, nil, nil, nil, nil, nil, nil, nil, nil, nil,
134
- nil, nil, 164, 164, 165, 166, 167, 168, 170, nil,
135
- nil, nil, 153, nil, nil, nil, 106, nil, nil, nil,
136
- nil, nil, nil, 182, nil, 169, 135, nil, nil, nil,
137
- nil, nil, nil, nil, nil, nil, nil, 171, nil ]
121
+ nil, 18, 10, 208, nil, 130, nil, nil, 95, 197,
122
+ 196, 101, 81, 196, -4, 28, 63, 20, 132, 55,
123
+ 73, -3, nil, nil, 190, 71, 189, 24, -1, -2,
124
+ nil, nil, nil, 45, nil, nil, 156, nil, nil, nil,
125
+ 91, nil, 33, nil, nil, 188, nil, nil, nil, 71,
126
+ nil, 67, nil, 33, 19, 7, nil, nil, nil, 36,
127
+ nil, nil, nil, nil, 44, nil, 168, nil, nil, 135,
128
+ 106, 115, nil, 47, nil, 20, nil, nil, nil, nil,
129
+ 89, nil, 157, 66, nil, nil, nil, 119, 124, 132,
130
+ 134, 136, 148, nil, nil, nil, 244, nil, nil, 168,
131
+ nil, nil, nil, 170, nil, nil, 172, nil, 184, nil,
132
+ nil, 189, nil, 285, 273, nil, 99, 168, nil, nil,
133
+ nil, 128, nil, nil, nil, nil, nil, nil, nil, nil,
134
+ nil, nil, 186, nil, nil, nil, nil, nil, nil, 171,
135
+ 188, nil, nil, 215, 187, nil, nil, nil, 189, nil,
136
+ nil ]
138
137
 
139
138
  racc_action_default = [
140
- -1, -102, -102, -102, -2, -5, -6, -7, -102, -102,
141
- -18, -19, -102, -102, -102, -102, -102, -28, -30, -35,
142
- -36, -37, -38, -39, -40, -41, -42, -47, -102, -102,
143
- -102, 149, -3, -4, -102, -102, -12, -13, -16, -17,
144
- -102, -102, -15, -22, -102, -24, -61, -102, -68, -25,
145
- -26, -102, -102, -31, -32, -33, -34, -43, -44, -45,
146
- -46, -48, -102, -56, -102, -8, -102, -10, -11, -20,
147
- -102, -21, -23, -60, -102, -102, -27, -29, -102, -102,
148
- -102, -55, -57, -102, -9, -14, -59, -67, -102, -74,
149
- -75, -76, -77, -78, -79, -80, -102, -84, -86, -88,
150
- -102, -90, -91, -92, -93, -94, -95, -96, -97, -98,
151
- -99, -101, -102, -102, -102, -102, -102, -102, -102, -58,
152
- -62, -66, -67, -69, -70, -71, -102, -73, -100, -87,
153
- -85, -83, -81, -102, -89, -67, -102, -49, -50, -51,
154
- -52, -53, -54, -63, -72, -82, -64, -67, -65 ]
139
+ -1, -103, -103, -103, -38, -35, -47, -36, -103, -103,
140
+ -103, -39, -18, -103, -103, -40, -19, -103, -41, -103,
141
+ -42, -103, -37, -2, -103, -103, -28, -5, -30, -6,
142
+ -7, 151, -34, -103, -15, -22, -103, -48, -43, -16,
143
+ -103, -56, -103, -44, -17, -103, -12, -13, -45, -103,
144
+ -46, -103, -68, -61, -103, -103, -24, -26, -25, -103,
145
+ -3, -31, -32, -33, -103, -4, -103, -21, -55, -103,
146
+ -103, -103, -8, -103, -57, -103, -10, -11, -20, -69,
147
+ -60, -23, -103, -103, -27, -29, -14, -103, -103, -103,
148
+ -103, -103, -103, -58, -9, -59, -75, -91, -85, -76,
149
+ -99, -77, -93, -78, -92, -89, -79, -94, -80, -102,
150
+ -95, -81, -96, -103, -103, -97, -103, -67, -98, -100,
151
+ -87, -103, -50, -49, -51, -52, -54, -53, -71, -72,
152
+ -74, -70, -103, -101, -88, -86, -84, -82, -90, -67,
153
+ -103, -66, -62, -103, -67, -73, -63, -83, -67, -64,
154
+ -65 ]
155
155
 
156
156
  racc_goto_table = [
157
- 87, 120, 41, 56, 44, 76, 49, 57, 58, 59,
158
- 60, 77, 52, 4, 122, 127, 32, 33, 38, 39,
159
- 40, 35, 133, 2, 66, 1, 126, 134, nil, nil,
160
- nil, nil, nil, nil, nil, nil, 143, nil, 135, nil,
161
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 146,
162
- nil, nil, 144, nil, nil, nil, nil, nil, nil, nil,
163
- nil, 148, 147, 86 ]
157
+ 117, 54, 142, 33, 84, 32, 58, 85, 64, 39,
158
+ 23, 38, 45, 44, 130, 43, 49, 2, 48, 1,
159
+ 50, 132, 138, nil, 146, nil, nil, nil, nil, 149,
160
+ nil, nil, 139, 150, 140, 60, nil, 65, nil, 144,
161
+ 75, nil, nil, nil, nil, nil, nil, nil, nil, nil,
162
+ 145, nil, nil, nil, nil, nil, nil, nil, nil, nil,
163
+ 95, 148 ]
164
164
 
165
165
  racc_goto_check = [
166
- 26, 27, 8, 19, 13, 14, 12, 19, 19, 19,
167
- 19, 15, 17, 2, 26, 26, 2, 2, 6, 6,
168
- 6, 7, 26, 3, 8, 1, 28, 31, nil, nil,
169
- nil, nil, nil, nil, nil, nil, 27, nil, 26, nil,
170
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 27,
171
- nil, nil, 26, nil, nil, nil, nil, nil, nil, nil,
172
- nil, 27, 26, 13 ]
166
+ 26, 13, 27, 8, 14, 19, 12, 15, 17, 6,
167
+ 2, 19, 7, 6, 26, 19, 6, 3, 19, 1,
168
+ 19, 28, 31, nil, 27, nil, nil, nil, nil, 27,
169
+ nil, nil, 26, 27, 26, 2, nil, 2, nil, 26,
170
+ 8, nil, nil, nil, nil, nil, nil, nil, nil, nil,
171
+ 26, nil, nil, nil, nil, nil, nil, nil, nil, nil,
172
+ 13, 26 ]
173
173
 
174
174
  racc_goto_pointer = [
175
- nil, 25, 11, 23, nil, nil, 8, 12, -11, nil,
176
- nil, nil, -9, -10, -46, -41, nil, -6, nil, -16,
177
- nil, nil, nil, nil, nil, nil, -74, -86, -63, nil,
178
- nil, -73, nil, nil, nil, nil, nil ]
175
+ nil, 19, 8, 17, nil, nil, -3, -5, -5, nil,
176
+ nil, nil, -19, -20, -55, -57, nil, -20, nil, 0,
177
+ nil, nil, nil, nil, nil, nil, -82, -115, -75, nil,
178
+ nil, -91, nil, nil, nil, nil, nil ]
179
179
 
180
180
  racc_goto_default = [
181
- nil, nil, nil, nil, 5, 6, 7, nil, nil, 10,
182
- 11, 12, 14, nil, 16, 17, 18, nil, 19, 20,
183
- 23, 24, 25, 26, 46, 47, nil, nil, nil, 89,
184
- 90, 91, 92, 93, 94, 95, 100 ]
181
+ nil, nil, nil, nil, 27, 29, 30, nil, nil, 12,
182
+ 16, 19, 21, nil, 24, 26, 28, nil, 5, 7,
183
+ 11, 15, 18, 20, 53, 55, nil, nil, nil, 96,
184
+ 99, 101, 103, 106, 108, 111, 113 ]
185
185
 
186
186
  racc_reduce_table = [
187
187
  0, 0, :racc_error,
@@ -253,28 +253,28 @@ racc_reduce_table = [
253
253
  1, 64, :_reduce_66,
254
254
  0, 64, :_reduce_67,
255
255
  1, 62, :_reduce_68,
256
+ 2, 62, :_reduce_69,
256
257
  1, 65, :_reduce_none,
257
258
  1, 65, :_reduce_none,
258
259
  1, 65, :_reduce_none,
259
- 3, 63, :_reduce_72,
260
- 2, 63, :_reduce_73,
261
- 1, 63, :_reduce_74,
260
+ 3, 63, :_reduce_73,
261
+ 2, 63, :_reduce_74,
262
+ 1, 63, :_reduce_75,
262
263
  1, 66, :_reduce_none,
263
264
  1, 66, :_reduce_none,
264
265
  1, 66, :_reduce_none,
265
266
  1, 66, :_reduce_none,
266
267
  1, 66, :_reduce_none,
267
268
  1, 66, :_reduce_none,
268
- 2, 72, :_reduce_81,
269
- 3, 72, :_reduce_82,
270
- 2, 71, :_reduce_83,
271
- 1, 71, :_reduce_84,
272
- 2, 70, :_reduce_85,
273
- 1, 70, :_reduce_86,
274
- 2, 69, :_reduce_87,
275
- 1, 69, :_reduce_88,
276
- 2, 68, :_reduce_89,
277
- 1, 68, :_reduce_90,
269
+ 2, 72, :_reduce_82,
270
+ 3, 72, :_reduce_83,
271
+ 2, 71, :_reduce_84,
272
+ 1, 71, :_reduce_85,
273
+ 2, 70, :_reduce_86,
274
+ 1, 70, :_reduce_87,
275
+ 2, 69, :_reduce_88,
276
+ 1, 69, :_reduce_89,
277
+ 2, 68, :_reduce_90,
278
278
  1, 68, :_reduce_91,
279
279
  1, 68, :_reduce_92,
280
280
  1, 68, :_reduce_93,
@@ -282,14 +282,15 @@ racc_reduce_table = [
282
282
  1, 68, :_reduce_95,
283
283
  1, 68, :_reduce_96,
284
284
  1, 68, :_reduce_97,
285
- 1, 73, :_reduce_98,
285
+ 1, 68, :_reduce_98,
286
286
  1, 73, :_reduce_99,
287
- 2, 67, :_reduce_100,
288
- 1, 67, :_reduce_101 ]
287
+ 1, 73, :_reduce_100,
288
+ 2, 67, :_reduce_101,
289
+ 1, 67, :_reduce_102 ]
289
290
 
290
- racc_reduce_n = 102
291
+ racc_reduce_n = 103
291
292
 
292
- racc_shift_n = 149
293
+ racc_shift_n = 151
293
294
 
294
295
  racc_token_table = {
295
296
  false => 0,
@@ -908,14 +909,21 @@ module_eval(<<'.,.,', 'parser.y', 227)
908
909
  end
909
910
  .,.,
910
911
 
911
- # reduce 69 omitted
912
+ module_eval(<<'.,.,', 'parser.y', 228)
913
+ def _reduce_69(val, _values, result)
914
+ result = interpret_identifier val.join
915
+ result
916
+ end
917
+ .,.,
912
918
 
913
919
  # reduce 70 omitted
914
920
 
915
921
  # reduce 71 omitted
916
922
 
917
- module_eval(<<'.,.,', 'parser.y', 236)
918
- def _reduce_72(val, _values, result)
923
+ # reduce 72 omitted
924
+
925
+ module_eval(<<'.,.,', 'parser.y', 237)
926
+ def _reduce_73(val, _values, result)
919
927
  result = [val.first, val.last].flatten
920
928
  val.last.first.operator = val[1]
921
929
 
@@ -923,22 +931,20 @@ module_eval(<<'.,.,', 'parser.y', 236)
923
931
  end
924
932
  .,.,
925
933
 
926
- module_eval(<<'.,.,', 'parser.y', 239)
927
- def _reduce_73(val, _values, result)
934
+ module_eval(<<'.,.,', 'parser.y', 240)
935
+ def _reduce_74(val, _values, result)
928
936
  result = val.flatten
929
937
  result
930
938
  end
931
939
  .,.,
932
940
 
933
- module_eval(<<'.,.,', 'parser.y', 240)
934
- def _reduce_74(val, _values, result)
941
+ module_eval(<<'.,.,', 'parser.y', 241)
942
+ def _reduce_75(val, _values, result)
935
943
  result = val
936
944
  result
937
945
  end
938
946
  .,.,
939
947
 
940
- # reduce 75 omitted
941
-
942
948
  # reduce 76 omitted
943
949
 
944
950
  # reduce 77 omitted
@@ -949,15 +955,17 @@ module_eval(<<'.,.,', 'parser.y', 240)
949
955
 
950
956
  # reduce 80 omitted
951
957
 
952
- module_eval(<<'.,.,', 'parser.y', 251)
953
- def _reduce_81(val, _values, result)
958
+ # reduce 81 omitted
959
+
960
+ module_eval(<<'.,.,', 'parser.y', 252)
961
+ def _reduce_82(val, _values, result)
954
962
  result = val.first
955
963
  result
956
964
  end
957
965
  .,.,
958
966
 
959
- module_eval(<<'.,.,', 'parser.y', 253)
960
- def _reduce_82(val, _values, result)
967
+ module_eval(<<'.,.,', 'parser.y', 254)
968
+ def _reduce_83(val, _values, result)
961
969
  name = interpret_identifier val.first.sub(/\($/, '')
962
970
  if name == 'rgb'
963
971
  result = Terms::Rgb.new(*val[1])
@@ -969,50 +977,50 @@ module_eval(<<'.,.,', 'parser.y', 253)
969
977
  end
970
978
  .,.,
971
979
 
972
- module_eval(<<'.,.,', 'parser.y', 262)
973
- def _reduce_83(val, _values, result)
980
+ module_eval(<<'.,.,', 'parser.y', 263)
981
+ def _reduce_84(val, _values, result)
974
982
  result = val.first
975
983
  result
976
984
  end
977
985
  .,.,
978
986
 
979
- module_eval(<<'.,.,', 'parser.y', 263)
980
- def _reduce_84(val, _values, result)
987
+ module_eval(<<'.,.,', 'parser.y', 264)
988
+ def _reduce_85(val, _values, result)
981
989
  result = Terms::Hash.new val.first.sub(/^#/, '')
982
990
  result
983
991
  end
984
992
  .,.,
985
993
 
986
- module_eval(<<'.,.,', 'parser.y', 266)
987
- def _reduce_85(val, _values, result)
994
+ module_eval(<<'.,.,', 'parser.y', 267)
995
+ def _reduce_86(val, _values, result)
988
996
  result = val.first
989
997
  result
990
998
  end
991
999
  .,.,
992
1000
 
993
- module_eval(<<'.,.,', 'parser.y', 267)
994
- def _reduce_86(val, _values, result)
1001
+ module_eval(<<'.,.,', 'parser.y', 268)
1002
+ def _reduce_87(val, _values, result)
995
1003
  result = Terms::URI.new interpret_uri val.first
996
1004
  result
997
1005
  end
998
1006
  .,.,
999
1007
 
1000
- module_eval(<<'.,.,', 'parser.y', 269)
1001
- def _reduce_87(val, _values, result)
1008
+ module_eval(<<'.,.,', 'parser.y', 270)
1009
+ def _reduce_88(val, _values, result)
1002
1010
  result = val.first
1003
1011
  result
1004
1012
  end
1005
1013
  .,.,
1006
1014
 
1007
- module_eval(<<'.,.,', 'parser.y', 270)
1008
- def _reduce_88(val, _values, result)
1015
+ module_eval(<<'.,.,', 'parser.y', 271)
1016
+ def _reduce_89(val, _values, result)
1009
1017
  result = Terms::String.new interpret_string val.first
1010
1018
  result
1011
1019
  end
1012
1020
  .,.,
1013
1021
 
1014
- module_eval(<<'.,.,', 'parser.y', 274)
1015
- def _reduce_89(val, _values, result)
1022
+ module_eval(<<'.,.,', 'parser.y', 275)
1023
+ def _reduce_90(val, _values, result)
1016
1024
  result = val[1]
1017
1025
  val[1].unary_operator = val.first
1018
1026
 
@@ -1020,24 +1028,24 @@ module_eval(<<'.,.,', 'parser.y', 274)
1020
1028
  end
1021
1029
  .,.,
1022
1030
 
1023
- module_eval(<<'.,.,', 'parser.y', 278)
1024
- def _reduce_90(val, _values, result)
1031
+ module_eval(<<'.,.,', 'parser.y', 279)
1032
+ def _reduce_91(val, _values, result)
1025
1033
  result = Terms::Number.new numeric val.first
1026
1034
 
1027
1035
  result
1028
1036
  end
1029
1037
  .,.,
1030
1038
 
1031
- module_eval(<<'.,.,', 'parser.y', 281)
1032
- def _reduce_91(val, _values, result)
1039
+ module_eval(<<'.,.,', 'parser.y', 282)
1040
+ def _reduce_92(val, _values, result)
1033
1041
  result = Terms::Number.new numeric(val.first), nil, '%'
1034
1042
 
1035
1043
  result
1036
1044
  end
1037
1045
  .,.,
1038
1046
 
1039
- module_eval(<<'.,.,', 'parser.y', 284)
1040
- def _reduce_92(val, _values, result)
1047
+ module_eval(<<'.,.,', 'parser.y', 285)
1048
+ def _reduce_93(val, _values, result)
1041
1049
  unit = val.first.gsub(/[\s\d.]/, '')
1042
1050
  result = Terms::Number.new numeric(val.first), nil, unit
1043
1051
 
@@ -1045,24 +1053,24 @@ module_eval(<<'.,.,', 'parser.y', 284)
1045
1053
  end
1046
1054
  .,.,
1047
1055
 
1048
- module_eval(<<'.,.,', 'parser.y', 288)
1049
- def _reduce_93(val, _values, result)
1056
+ module_eval(<<'.,.,', 'parser.y', 289)
1057
+ def _reduce_94(val, _values, result)
1050
1058
  result = Terms::Number.new numeric(val.first), nil, 'em'
1051
1059
 
1052
1060
  result
1053
1061
  end
1054
1062
  .,.,
1055
1063
 
1056
- module_eval(<<'.,.,', 'parser.y', 291)
1057
- def _reduce_94(val, _values, result)
1064
+ module_eval(<<'.,.,', 'parser.y', 292)
1065
+ def _reduce_95(val, _values, result)
1058
1066
  result = Terms::Number.new numeric(val.first), nil, 'ex'
1059
1067
 
1060
1068
  result
1061
1069
  end
1062
1070
  .,.,
1063
1071
 
1064
- module_eval(<<'.,.,', 'parser.y', 294)
1065
- def _reduce_95(val, _values, result)
1072
+ module_eval(<<'.,.,', 'parser.y', 295)
1073
+ def _reduce_96(val, _values, result)
1066
1074
  unit = val.first.gsub(/[\s\d.]/, '')
1067
1075
  result = Terms::Number.new numeric(val.first), nil, unit
1068
1076
 
@@ -1070,8 +1078,8 @@ module_eval(<<'.,.,', 'parser.y', 294)
1070
1078
  end
1071
1079
  .,.,
1072
1080
 
1073
- module_eval(<<'.,.,', 'parser.y', 298)
1074
- def _reduce_96(val, _values, result)
1081
+ module_eval(<<'.,.,', 'parser.y', 299)
1082
+ def _reduce_97(val, _values, result)
1075
1083
  unit = val.first.gsub(/[\s\d.]/, '')
1076
1084
  result = Terms::Number.new numeric(val.first), nil, unit
1077
1085
 
@@ -1079,8 +1087,8 @@ module_eval(<<'.,.,', 'parser.y', 298)
1079
1087
  end
1080
1088
  .,.,
1081
1089
 
1082
- module_eval(<<'.,.,', 'parser.y', 302)
1083
- def _reduce_97(val, _values, result)
1090
+ module_eval(<<'.,.,', 'parser.y', 303)
1091
+ def _reduce_98(val, _values, result)
1084
1092
  unit = val.first.gsub(/[\s\d.]/, '')
1085
1093
  result = Terms::Number.new numeric(val.first), nil, unit
1086
1094
 
@@ -1088,29 +1096,29 @@ module_eval(<<'.,.,', 'parser.y', 302)
1088
1096
  end
1089
1097
  .,.,
1090
1098
 
1091
- module_eval(<<'.,.,', 'parser.y', 307)
1092
- def _reduce_98(val, _values, result)
1099
+ module_eval(<<'.,.,', 'parser.y', 308)
1100
+ def _reduce_99(val, _values, result)
1093
1101
  result = :minus
1094
1102
  result
1095
1103
  end
1096
1104
  .,.,
1097
1105
 
1098
- module_eval(<<'.,.,', 'parser.y', 308)
1099
- def _reduce_99(val, _values, result)
1106
+ module_eval(<<'.,.,', 'parser.y', 309)
1107
+ def _reduce_100(val, _values, result)
1100
1108
  result = :plus
1101
1109
  result
1102
1110
  end
1103
1111
  .,.,
1104
1112
 
1105
- module_eval(<<'.,.,', 'parser.y', 311)
1106
- def _reduce_100(val, _values, result)
1113
+ module_eval(<<'.,.,', 'parser.y', 312)
1114
+ def _reduce_101(val, _values, result)
1107
1115
  result = val.first
1108
1116
  result
1109
1117
  end
1110
1118
  .,.,
1111
1119
 
1112
- module_eval(<<'.,.,', 'parser.y', 312)
1113
- def _reduce_101(val, _values, result)
1120
+ module_eval(<<'.,.,', 'parser.y', 313)
1121
+ def _reduce_102(val, _values, result)
1114
1122
  result = Terms::Ident.new interpret_identifier val.first
1115
1123
  result
1116
1124
  end
@@ -226,6 +226,7 @@ rule
226
226
  ;
227
227
  property
228
228
  : IDENT { result = interpret_identifier val[0] }
229
+ | STAR IDENT { result = interpret_identifier val.join }
229
230
  ;
230
231
  operator
231
232
  : COMMA
data/lib/csspool.rb CHANGED
@@ -13,7 +13,7 @@ require 'csspool/visitors'
13
13
  require 'csspool/collection'
14
14
 
15
15
  module CSSPool
16
- VERSION = "3.0.1"
16
+ VERSION = "3.0.2"
17
17
 
18
18
  def self.CSS doc
19
19
  CSSPool::CSS::Document.parse doc
@@ -1,10 +1,17 @@
1
1
  require 'helper'
2
-
3
2
  module CSSPool
4
3
  module CSS
5
4
  class TestDocument < CSSPool::TestCase
5
+ def test_file_open
6
+ doc = File.open("#{ASSET_DIR}/test.css") do |f|
7
+ CSSPool.CSS f
8
+ end
9
+
10
+ assert_equal 1, doc['.test'].length
11
+ end
12
+
6
13
  def test_search
7
- doc = CSSPool.CSS('div > p { background: red; }')
14
+ doc = CSSPool.CSS("div > p { background: red; }\n")
8
15
  assert_equal 1, doc['div > p'].length
9
16
  assert_equal 1, doc['div > p'].first.declarations.length
10
17
  end
@@ -163,6 +163,25 @@ module CSSPool
163
163
  assert_equal %w{ background padding }, names
164
164
  end
165
165
 
166
+ def test_ie_safe_hack
167
+ # http://mathiasbynens.be/notes/safe-css-hacks
168
+ @parser.scan_str <<-eocss
169
+ .foo {
170
+ color: black;
171
+ color: green\\9; /* IE8 and older, but there's more... */
172
+ *color: blue; /* IE7 and older */
173
+ _color: red; /* IE6 and older */
174
+ }
175
+ eocss
176
+ declarations = @parser.handler.calls.find_all { |x|
177
+ x.first == :property
178
+ }
179
+ names = declarations.map { |y| y[1].first }
180
+ assert_equal %w{color color *color _color}, names
181
+ # values = declarations.map { |y| y[1][1].first.to_s }
182
+ # assert_equal %w{black green\\9 blue red}, values
183
+ end
184
+
166
185
  def test_star_attribute
167
186
  assert_attribute '*:foo { }'
168
187
  assert_attribute 'a *.foo { }'
@@ -0,0 +1,7 @@
1
+ div > p {
2
+ background-color: #f00;
3
+ }
4
+
5
+ .test {
6
+ box-shadow: 20px;
7
+ }
metadata CHANGED
@@ -1,110 +1,142 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: csspool
3
- version: !ruby/object:Gem::Version
4
- version: 3.0.1
3
+ version: !ruby/object:Gem::Version
4
+ hash: 3
5
5
  prerelease:
6
+ segments:
7
+ - 3
8
+ - 0
9
+ - 2
10
+ version: 3.0.2
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Aaron Patterson
9
14
  - John Barnette
10
15
  autorequire:
11
16
  bindir: bin
12
17
  cert_chain: []
13
- date: 2012-05-18 00:00:00.000000000 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
18
+
19
+ date: 2012-10-09 00:00:00 Z
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
16
22
  name: rdoc
17
- requirement: &70178736571580 !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
18
25
  none: false
19
- requirements:
26
+ requirements:
20
27
  - - ~>
21
- - !ruby/object:Gem::Version
22
- version: '3.10'
28
+ - !ruby/object:Gem::Version
29
+ hash: 19
30
+ segments:
31
+ - 3
32
+ - 10
33
+ version: "3.10"
23
34
  type: :development
24
- prerelease: false
25
- version_requirements: *70178736571580
26
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
27
37
  name: racc
28
- requirement: &70178736571000 !ruby/object:Gem::Requirement
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
29
40
  none: false
30
- requirements:
31
- - - ! '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
34
48
  type: :development
35
- prerelease: false
36
- version_requirements: *70178736571000
37
- - !ruby/object:Gem::Dependency
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
38
51
  name: rexical
39
- requirement: &70178736570560 !ruby/object:Gem::Requirement
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
40
54
  none: false
41
- requirements:
42
- - - ! '>='
43
- - !ruby/object:Gem::Version
44
- version: '0'
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
45
62
  type: :development
46
- prerelease: false
47
- version_requirements: *70178736570560
48
- - !ruby/object:Gem::Dependency
63
+ version_requirements: *id003
64
+ - !ruby/object:Gem::Dependency
49
65
  name: hoe-git
50
- requirement: &70178736586440 !ruby/object:Gem::Requirement
66
+ prerelease: false
67
+ requirement: &id004 !ruby/object:Gem::Requirement
51
68
  none: false
52
- requirements:
53
- - - ! '>='
54
- - !ruby/object:Gem::Version
55
- version: '0'
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
56
76
  type: :development
57
- prerelease: false
58
- version_requirements: *70178736586440
59
- - !ruby/object:Gem::Dependency
77
+ version_requirements: *id004
78
+ - !ruby/object:Gem::Dependency
60
79
  name: hoe-gemspec
61
- requirement: &70178736585440 !ruby/object:Gem::Requirement
80
+ prerelease: false
81
+ requirement: &id005 !ruby/object:Gem::Requirement
62
82
  none: false
63
- requirements:
64
- - - ! '>='
65
- - !ruby/object:Gem::Version
66
- version: '0'
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ hash: 3
87
+ segments:
88
+ - 0
89
+ version: "0"
67
90
  type: :development
68
- prerelease: false
69
- version_requirements: *70178736585440
70
- - !ruby/object:Gem::Dependency
91
+ version_requirements: *id005
92
+ - !ruby/object:Gem::Dependency
71
93
  name: hoe-bundler
72
- requirement: &70178736584560 !ruby/object:Gem::Requirement
94
+ prerelease: false
95
+ requirement: &id006 !ruby/object:Gem::Requirement
73
96
  none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ hash: 3
101
+ segments:
102
+ - 0
103
+ version: "0"
78
104
  type: :development
79
- prerelease: false
80
- version_requirements: *70178736584560
81
- - !ruby/object:Gem::Dependency
105
+ version_requirements: *id006
106
+ - !ruby/object:Gem::Dependency
82
107
  name: hoe
83
- requirement: &70178736583940 !ruby/object:Gem::Requirement
108
+ prerelease: false
109
+ requirement: &id007 !ruby/object:Gem::Requirement
84
110
  none: false
85
- requirements:
111
+ requirements:
86
112
  - - ~>
87
- - !ruby/object:Gem::Version
88
- version: '3.0'
113
+ - !ruby/object:Gem::Version
114
+ hash: 5
115
+ segments:
116
+ - 3
117
+ - 1
118
+ version: "3.1"
89
119
  type: :development
90
- prerelease: false
91
- version_requirements: *70178736583940
92
- description: ! 'CSSPool is a CSS parser. CSSPool provides a SAC interface for parsing
93
- CSS as
94
-
95
- well as a document oriented interface for parsing CSS.'
96
- email:
120
+ version_requirements: *id007
121
+ description: |-
122
+ CSSPool is a CSS parser. CSSPool provides a SAC interface for parsing CSS as
123
+ well as a document oriented interface for parsing CSS.
124
+ email:
97
125
  - aaronp@rubyforge.org
98
126
  - jbarnette@rubyforge.org
99
127
  executables: []
128
+
100
129
  extensions: []
101
- extra_rdoc_files:
130
+
131
+ extra_rdoc_files:
102
132
  - CHANGELOG.rdoc
103
133
  - Manifest.txt
104
134
  - README.rdoc
105
- files:
135
+ files:
106
136
  - .autotest
107
137
  - CHANGELOG.rdoc
138
+ - Gemfile
139
+ - Gemfile.lock
108
140
  - Manifest.txt
109
141
  - README.rdoc
110
142
  - Rakefile
@@ -154,6 +186,7 @@ files:
154
186
  - test/css/test_import_rule.rb
155
187
  - test/css/test_parser.rb
156
188
  - test/css/test_tokenizer.rb
189
+ - test/files/test.css
157
190
  - test/helper.rb
158
191
  - test/sac/test_parser.rb
159
192
  - test/sac/test_properties.rb
@@ -168,31 +201,39 @@ files:
168
201
  - .gemtest
169
202
  homepage: http://csspool.rubyforge.org
170
203
  licenses: []
204
+
171
205
  post_install_message:
172
- rdoc_options:
206
+ rdoc_options:
173
207
  - --main
174
208
  - README.rdoc
175
- require_paths:
209
+ require_paths:
176
210
  - lib
177
- required_ruby_version: !ruby/object:Gem::Requirement
211
+ required_ruby_version: !ruby/object:Gem::Requirement
178
212
  none: false
179
- requirements:
180
- - - ! '>='
181
- - !ruby/object:Gem::Version
182
- version: '0'
183
- required_rubygems_version: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ hash: 3
217
+ segments:
218
+ - 0
219
+ version: "0"
220
+ required_rubygems_version: !ruby/object:Gem::Requirement
184
221
  none: false
185
- requirements:
186
- - - ! '>='
187
- - !ruby/object:Gem::Version
188
- version: '0'
222
+ requirements:
223
+ - - ">="
224
+ - !ruby/object:Gem::Version
225
+ hash: 3
226
+ segments:
227
+ - 0
228
+ version: "0"
189
229
  requirements: []
230
+
190
231
  rubyforge_project: csspool
191
232
  rubygems_version: 1.8.17
192
233
  signing_key:
193
234
  specification_version: 3
194
235
  summary: CSSPool is a CSS parser
195
- test_files:
236
+ test_files:
196
237
  - test/css/test_document.rb
197
238
  - test/css/test_import_rule.rb
198
239
  - test/css/test_parser.rb