csscss 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +0 -1
- data/CHANGELOG.md +3 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +39 -0
- data/README.md +47 -12
- data/bin/csscss +0 -1
- data/csscss.gemspec +2 -3
- data/lib/csscss/cli.rb +10 -1
- data/lib/csscss/json_reporter.rb +17 -0
- data/lib/csscss/parser/background.rb +72 -0
- data/lib/csscss/parser/base.rb +13 -0
- data/lib/csscss/parser/border.rb +45 -0
- data/lib/csscss/parser/border_color.rb +41 -0
- data/lib/csscss/parser/border_side.rb +91 -0
- data/lib/csscss/parser/border_style.rb +41 -0
- data/lib/csscss/parser/border_width.rb +37 -0
- data/lib/csscss/parser/color.rb +53 -0
- data/lib/csscss/parser/common.rb +86 -0
- data/lib/csscss/parser/css.rb +88 -0
- data/lib/csscss/parser/font.rb +96 -0
- data/lib/csscss/parser/list_style.rb +44 -0
- data/lib/csscss/parser/margin.rb +32 -0
- data/lib/csscss/parser/multi_side_transformer.rb +47 -0
- data/lib/csscss/parser/outline.rb +45 -0
- data/lib/csscss/parser/padding.rb +32 -0
- data/lib/csscss/parslet_optimizations.rb +77 -0
- data/lib/csscss/redundancy_analyzer.rb +75 -8
- data/lib/csscss/reporter.rb +2 -4
- data/lib/csscss/types.rb +77 -2
- data/lib/csscss/version.rb +1 -1
- data/lib/csscss.rb +22 -1
- data/test/csscss/json_reporter_test.rb +34 -0
- data/test/csscss/parser/background_test.rb +57 -0
- data/test/csscss/parser/border_color_test.rb +30 -0
- data/test/csscss/parser/border_side_test.rb +44 -0
- data/test/csscss/parser/border_style_test.rb +30 -0
- data/test/csscss/parser/border_test.rb +31 -0
- data/test/csscss/parser/border_width_test.rb +30 -0
- data/test/csscss/parser/color_test.rb +51 -0
- data/test/csscss/parser/common_test.rb +130 -0
- data/test/csscss/parser/css_test.rb +133 -0
- data/test/csscss/parser/font_test.rb +43 -0
- data/test/csscss/parser/list_style_test.rb +28 -0
- data/test/csscss/parser/margin_test.rb +50 -0
- data/test/csscss/parser/outline_test.rb +26 -0
- data/test/csscss/parser/padding_test.rb +50 -0
- data/test/csscss/redundancy_analyzer_test.rb +126 -4
- data/test/csscss/reporter_test.rb +4 -2
- data/test/csscss/types_test.rb +73 -0
- data/test/just_parse.rb +8 -0
- data/test/test_helper.rb +49 -6
- metadata +61 -23
- data/.rspec.default +0 -1
@@ -0,0 +1,50 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module Csscss::Parser
|
4
|
+
module Margin
|
5
|
+
describe Margin do
|
6
|
+
include CommonParserTests
|
7
|
+
|
8
|
+
before do
|
9
|
+
@parser = Parser.new
|
10
|
+
@trans = Transformer.new
|
11
|
+
end
|
12
|
+
|
13
|
+
it "converts shorthand rules to longhand" do
|
14
|
+
trans("1px 10% inherit auto").must_equal([
|
15
|
+
dec("margin-top", "1px"),
|
16
|
+
dec("margin-right", "10%"),
|
17
|
+
dec("margin-bottom", "inherit"),
|
18
|
+
dec("margin-left", "auto")
|
19
|
+
])
|
20
|
+
|
21
|
+
trans("1px 10% inherit").must_equal([
|
22
|
+
dec("margin-top", "1px"),
|
23
|
+
dec("margin-right", "10%"),
|
24
|
+
dec("margin-bottom", "inherit"),
|
25
|
+
dec("margin-left", "10%")
|
26
|
+
])
|
27
|
+
|
28
|
+
trans("1px 10%").must_equal([
|
29
|
+
dec("margin-top", "1px"),
|
30
|
+
dec("margin-right", "10%"),
|
31
|
+
dec("margin-bottom", "1px"),
|
32
|
+
dec("margin-left", "10%")
|
33
|
+
])
|
34
|
+
|
35
|
+
trans("1px").must_equal([
|
36
|
+
dec("margin-top", "1px"),
|
37
|
+
dec("margin-right", "1px"),
|
38
|
+
dec("margin-bottom", "1px"),
|
39
|
+
dec("margin-left", "1px")
|
40
|
+
])
|
41
|
+
end
|
42
|
+
|
43
|
+
it "tries the parse and returns false if it doesn't work" do
|
44
|
+
@parser.try_parse("foo").must_equal(false)
|
45
|
+
parsed = @parser.try_parse("1px")
|
46
|
+
parsed[:margin][:top].must_equal("1px")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module Csscss::Parser
|
4
|
+
module Outline
|
5
|
+
describe self do
|
6
|
+
include CommonParserTests
|
7
|
+
|
8
|
+
before do
|
9
|
+
@parser = Parser.new
|
10
|
+
@trans = Transformer.new
|
11
|
+
end
|
12
|
+
|
13
|
+
it "converts shorthand rules to longhand" do
|
14
|
+
trans("1px solid blue").must_equal([
|
15
|
+
dec("outline-width", "1px"),
|
16
|
+
dec("outline-style", "solid"),
|
17
|
+
dec("outline-color", "blue")
|
18
|
+
])
|
19
|
+
|
20
|
+
trans("solid").must_equal([
|
21
|
+
dec("outline-style", "solid")
|
22
|
+
])
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module Csscss::Parser
|
4
|
+
module Padding
|
5
|
+
describe Padding do
|
6
|
+
include CommonParserTests
|
7
|
+
|
8
|
+
before do
|
9
|
+
@parser = Parser.new
|
10
|
+
@trans = Transformer.new
|
11
|
+
end
|
12
|
+
|
13
|
+
it "converts shorthand rules to longhand" do
|
14
|
+
trans("1px 10% inherit 4em").must_equal([
|
15
|
+
dec("padding-top", "1px"),
|
16
|
+
dec("padding-right", "10%"),
|
17
|
+
dec("padding-bottom", "inherit"),
|
18
|
+
dec("padding-left", "4em")
|
19
|
+
])
|
20
|
+
|
21
|
+
trans("1px 10% inherit").must_equal([
|
22
|
+
dec("padding-top", "1px"),
|
23
|
+
dec("padding-right", "10%"),
|
24
|
+
dec("padding-bottom", "inherit"),
|
25
|
+
dec("padding-left", "10%")
|
26
|
+
])
|
27
|
+
|
28
|
+
trans("1px 10%").must_equal([
|
29
|
+
dec("padding-top", "1px"),
|
30
|
+
dec("padding-right", "10%"),
|
31
|
+
dec("padding-bottom", "1px"),
|
32
|
+
dec("padding-left", "10%")
|
33
|
+
])
|
34
|
+
|
35
|
+
trans("1px").must_equal([
|
36
|
+
dec("padding-top", "1px"),
|
37
|
+
dec("padding-right", "1px"),
|
38
|
+
dec("padding-bottom", "1px"),
|
39
|
+
dec("padding-left", "1px")
|
40
|
+
])
|
41
|
+
end
|
42
|
+
|
43
|
+
it "tries the parse and returns false if it doesn't work" do
|
44
|
+
@parser.try_parse("foo").must_equal(false)
|
45
|
+
parsed = @parser.try_parse("1px")
|
46
|
+
parsed[:padding][:top].must_equal("1px")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -2,6 +2,8 @@ require "test_helper"
|
|
2
2
|
|
3
3
|
module Csscss
|
4
4
|
describe RedundancyAnalyzer do
|
5
|
+
include TypeHelpers
|
6
|
+
|
5
7
|
it "finds and trims redundant rule_sets" do
|
6
8
|
css = %$
|
7
9
|
h1, h2 { display: none; position: relative; outline:none}
|
@@ -11,17 +13,17 @@ module Csscss
|
|
11
13
|
$
|
12
14
|
|
13
15
|
RedundancyAnalyzer.new(css).redundancies.must_equal({
|
14
|
-
[sel(".bar"), sel(
|
16
|
+
[sel(".bar"), sel("h1, h2")] => [dec("outline", "none"), dec("position", "relative")],
|
15
17
|
[sel(".bar"), sel(".foo")] => [dec("width", "1px")],
|
16
|
-
[sel(".baz"), sel(".foo"), sel(
|
18
|
+
[sel(".baz"), sel(".foo"), sel("h1, h2")] => [dec("display", "none")]
|
17
19
|
})
|
18
20
|
|
19
21
|
RedundancyAnalyzer.new(css).redundancies.first.must_equal [
|
20
|
-
[sel(".bar"), sel(
|
22
|
+
[sel(".bar"), sel("h1, h2")] , [dec("outline", "none"), dec("position", "relative")]
|
21
23
|
]
|
22
24
|
|
23
25
|
RedundancyAnalyzer.new(css).redundancies(2).must_equal({
|
24
|
-
[sel(".bar"), sel(
|
26
|
+
[sel(".bar"), sel("h1, h2")] => [dec("outline", "none"), dec("position", "relative")]
|
25
27
|
})
|
26
28
|
end
|
27
29
|
|
@@ -79,5 +81,125 @@ module Csscss
|
|
79
81
|
redundancies = RedundancyAnalyzer.new(css).redundancies(3)
|
80
82
|
redundancies[[sel(".bar"), sel(".baz")]].size.must_equal(5)
|
81
83
|
end
|
84
|
+
|
85
|
+
it "also matches shorthand rules" do
|
86
|
+
css = %$
|
87
|
+
.foo { background-color: #fff }
|
88
|
+
.bar { background: #fff top }
|
89
|
+
$
|
90
|
+
|
91
|
+
RedundancyAnalyzer.new(css).redundancies.must_equal({
|
92
|
+
[sel(".bar"), sel(".foo")] => [dec("background-color", "#fff")]
|
93
|
+
})
|
94
|
+
end
|
95
|
+
|
96
|
+
it "keeps full shorthand together" do
|
97
|
+
css = %$
|
98
|
+
.baz { background-color: #fff }
|
99
|
+
.foo { background: #fff top }
|
100
|
+
.bar { background: #fff top }
|
101
|
+
$
|
102
|
+
|
103
|
+
RedundancyAnalyzer.new(css).redundancies.must_equal({
|
104
|
+
[sel(".bar"), sel(".foo")] => [dec("background", "#fff top")],
|
105
|
+
[sel(".bar"), sel(".baz"), sel(".foo")] => [dec("background-color", "#fff")]
|
106
|
+
})
|
107
|
+
end
|
108
|
+
|
109
|
+
it "doesn't consolidate explicit short/longhand" do
|
110
|
+
css = %$
|
111
|
+
.foo { background-color: #fff }
|
112
|
+
.bar { background: #fff }
|
113
|
+
$
|
114
|
+
|
115
|
+
RedundancyAnalyzer.new(css).redundancies.must_equal({
|
116
|
+
[sel(".bar"), sel(".foo")] => [dec("background-color", "#fff")]
|
117
|
+
})
|
118
|
+
|
119
|
+
css = %$
|
120
|
+
.bar { background: #fff }
|
121
|
+
.foo { background-color: #fff }
|
122
|
+
$
|
123
|
+
|
124
|
+
RedundancyAnalyzer.new(css).redundancies.must_equal({
|
125
|
+
[sel(".bar"), sel(".foo")] => [dec("background-color", "#fff")]
|
126
|
+
})
|
127
|
+
end
|
128
|
+
|
129
|
+
it "3-way case consolidation" do
|
130
|
+
css = %$
|
131
|
+
.bar { background: #fff }
|
132
|
+
.baz { background: #fff top }
|
133
|
+
.foo { background-color: #fff }
|
134
|
+
$
|
135
|
+
|
136
|
+
RedundancyAnalyzer.new(css).redundancies.must_equal({
|
137
|
+
[sel(".bar"), sel(".baz"), sel(".foo")] => [dec("background-color", "#fff")]
|
138
|
+
})
|
139
|
+
end
|
140
|
+
|
141
|
+
it "handles border and border-top matches appropriately" do
|
142
|
+
css = %$
|
143
|
+
.bar { border: 1px solid #fff }
|
144
|
+
.baz { border-top: 1px solid #fff }
|
145
|
+
.foo { border-top-width: 1px }
|
146
|
+
$
|
147
|
+
|
148
|
+
RedundancyAnalyzer.new(css).redundancies.must_equal({
|
149
|
+
[sel(".bar"), sel(".baz")] => [dec("border-top", "1px solid #fff")],
|
150
|
+
[sel(".bar"), sel(".baz"), sel(".foo")] => [dec("border-top-width", "1px")]
|
151
|
+
})
|
152
|
+
end
|
153
|
+
|
154
|
+
it "reduces border matches appropriately" do
|
155
|
+
css = %$
|
156
|
+
.bar { border: 1px solid #FFF }
|
157
|
+
.baz { border: 1px solid #FFF }
|
158
|
+
$
|
159
|
+
|
160
|
+
RedundancyAnalyzer.new(css).redundancies.must_equal({
|
161
|
+
[sel(".bar"), sel(".baz")] => [dec("border", "1px solid #fff")]
|
162
|
+
})
|
163
|
+
|
164
|
+
css = %$
|
165
|
+
.bar { border: 4px solid #4F4F4F }
|
166
|
+
.baz { border: 4px solid #4F4F4F }
|
167
|
+
.foo { border: 4px solid #3A86CE }
|
168
|
+
$
|
169
|
+
|
170
|
+
RedundancyAnalyzer.new(css).redundancies.must_equal({
|
171
|
+
[sel(".bar"), sel(".baz")] => [dec("border", "4px solid #4f4f4f")],
|
172
|
+
[sel(".bar"), sel(".baz"), sel(".foo")] => [dec("border-style", "solid"), dec("border-width", "4px")]
|
173
|
+
})
|
174
|
+
|
175
|
+
RedundancyAnalyzer.new(css).redundancies(2).must_equal({
|
176
|
+
[sel(".bar"), sel(".baz"), sel(".foo")] => [dec("border-style", "solid"), dec("border-width", "4px")]
|
177
|
+
})
|
178
|
+
end
|
179
|
+
|
180
|
+
it "reduces padding and margin" do
|
181
|
+
css = %$
|
182
|
+
.bar { padding: 4px; margin: 5px }
|
183
|
+
.baz { padding-bottom: 4px}
|
184
|
+
.foo { margin-right: 5px }
|
185
|
+
$
|
186
|
+
|
187
|
+
RedundancyAnalyzer.new(css).redundancies.must_equal({
|
188
|
+
[sel(".bar"), sel(".baz")] => [dec("padding-bottom", "4px")],
|
189
|
+
[sel(".bar"), sel(".foo")] => [dec("margin-right", "5px")]
|
190
|
+
})
|
191
|
+
end
|
192
|
+
|
193
|
+
# TODO: someday
|
194
|
+
# it "reports duplication within the same selector" do
|
195
|
+
# css = %$
|
196
|
+
# .bar { background: #fff top; background-color: #fff }
|
197
|
+
# $
|
198
|
+
|
199
|
+
# # TODO: need to update the reporter for this
|
200
|
+
# RedundancyAnalyzer.new(css).redundancies.must_equal({
|
201
|
+
# [sel(".bar")] => [dec("background-color", "#fff")]
|
202
|
+
# })
|
203
|
+
# end
|
82
204
|
end
|
83
205
|
end
|
@@ -2,11 +2,13 @@ require "test_helper"
|
|
2
2
|
|
3
3
|
module Csscss
|
4
4
|
describe Reporter do
|
5
|
+
include TypeHelpers
|
6
|
+
|
5
7
|
it "formats string result" do
|
6
8
|
reporter = Reporter.new({
|
7
9
|
[sel(".foo"), sel(".bar")] => [dec("width", "1px"), dec("border", "black")],
|
8
|
-
[sel(
|
9
|
-
[sel(
|
10
|
+
[sel("h1, h2"), sel(".foo"), sel(".baz")] => [dec("display", "none")],
|
11
|
+
[sel("h1, h2"), sel(".bar")] => [dec("position", "relative")]
|
10
12
|
})
|
11
13
|
|
12
14
|
expected =<<-EXPECTED
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module Csscss
|
4
|
+
describe Declaration do
|
5
|
+
it "< and > checks parents" do
|
6
|
+
dec1 = Declaration.new("background", "#fff")
|
7
|
+
dec2 = Declaration.new("background", "#fff")
|
8
|
+
dec3 = Declaration.new("background-color", "#fff", [dec1])
|
9
|
+
dec4 = Declaration.new("background-color", "#fff", nil)
|
10
|
+
|
11
|
+
dec1.must_be :>, dec3
|
12
|
+
dec3.must_be :<, dec1
|
13
|
+
|
14
|
+
dec1.wont_be :>, dec4
|
15
|
+
dec1.wont_be :>, dec2
|
16
|
+
dec4.wont_be :>, dec1
|
17
|
+
end
|
18
|
+
|
19
|
+
it "checks ancestory against all parents" do
|
20
|
+
dec1 = Declaration.new("border", "#fff")
|
21
|
+
dec2 = Declaration.new("border", "#fff top")
|
22
|
+
dec3 = Declaration.new("border-top", "#fff", [dec1, dec2])
|
23
|
+
|
24
|
+
dec1.must_be :>, dec3
|
25
|
+
dec2.must_be :>, dec3
|
26
|
+
|
27
|
+
dec1.wont_be :>, dec1
|
28
|
+
dec2.wont_be :>, dec1
|
29
|
+
dec1.wont_be :>, dec2
|
30
|
+
dec3.wont_be :>, dec1
|
31
|
+
end
|
32
|
+
|
33
|
+
it "is a derivative if it has parents" do
|
34
|
+
dec1 = Declaration.new("background", "#fff")
|
35
|
+
dec1.wont_be :derivative?
|
36
|
+
Declaration.new("background-color", "#fff", [dec1]).must_be :derivative?
|
37
|
+
end
|
38
|
+
|
39
|
+
it "ignores parents when checking equality" do
|
40
|
+
dec1 = Declaration.new("background", "#fff")
|
41
|
+
dec2 = Declaration.new("background-color", "#fff", [dec1])
|
42
|
+
dec3 = Declaration.new("background-color", "#fff", nil)
|
43
|
+
|
44
|
+
dec1.wont_equal dec2
|
45
|
+
dec2.wont_equal dec1
|
46
|
+
|
47
|
+
dec2.must_equal dec3
|
48
|
+
dec3.must_equal dec2
|
49
|
+
|
50
|
+
dec2.hash.must_equal dec3.hash
|
51
|
+
dec3.hash.must_equal dec2.hash
|
52
|
+
dec3.hash.wont_equal dec1.hash
|
53
|
+
|
54
|
+
dec2.must_be :eql?, dec3
|
55
|
+
dec3.must_be :eql?, dec2
|
56
|
+
dec2.wont_be :eql?, dec1
|
57
|
+
end
|
58
|
+
|
59
|
+
it "derivatives are handled correctly in a hash" do
|
60
|
+
dec1 = Declaration.new("background", "#fff")
|
61
|
+
dec2 = Declaration.new("background-color", "#fff", [dec1])
|
62
|
+
dec3 = Declaration.new("background-color", "#fff", nil)
|
63
|
+
|
64
|
+
h = {}
|
65
|
+
h[dec2] = false
|
66
|
+
h[dec3] = true
|
67
|
+
|
68
|
+
h.keys.size.must_equal 1
|
69
|
+
h[dec2].must_equal true
|
70
|
+
h[dec3].must_equal true
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/test/just_parse.rb
ADDED
data/test/test_helper.rb
CHANGED
@@ -7,19 +7,62 @@ require "debugger"
|
|
7
7
|
|
8
8
|
require "csscss"
|
9
9
|
|
10
|
-
|
10
|
+
module TypeHelpers
|
11
11
|
def sel(s)
|
12
|
-
Csscss::Selector.new(
|
12
|
+
Csscss::Selector.new(s)
|
13
13
|
end
|
14
14
|
|
15
15
|
def dec(p, v)
|
16
16
|
Csscss::Declaration.new(p, v)
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
20
|
-
Csscss::
|
19
|
+
def rs(selectors, decs)
|
20
|
+
Csscss::Ruleset.new(selectors, decs)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
module MiniTest::Assertions
|
25
|
+
def assert_parse(parser, string)
|
26
|
+
assert parser.parse(string)
|
27
|
+
rescue Parslet::ParseFailed => ex
|
28
|
+
assert false, ex.cause.ascii_tree
|
29
|
+
end
|
30
|
+
|
31
|
+
def assert_not_parse(parser, string)
|
32
|
+
parser.parse(string)
|
33
|
+
assert false, "expected #{parser} to not successfully parse \"#{string}\" and it did"
|
34
|
+
rescue Parslet::ParseFailed => ex
|
35
|
+
assert ex
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
Parslet::Atoms::DSL.infect_an_assertion :assert_parse, :must_parse, :do_not_flip
|
40
|
+
Parslet::Atoms::DSL.infect_an_assertion :assert_not_parse, :wont_parse, :do_not_flip
|
41
|
+
|
42
|
+
module CommonParserTests
|
43
|
+
def self.included(base)
|
44
|
+
base.instance_eval do
|
45
|
+
include Helpers
|
46
|
+
include TypeHelpers
|
47
|
+
|
48
|
+
describe "common parser tests" do
|
49
|
+
it "parses inherit" do
|
50
|
+
trans("inherit").must_equal([])
|
51
|
+
end
|
52
|
+
|
53
|
+
it "doesn't parse unknown values" do
|
54
|
+
@parser.wont_parse("foo")
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
module Helpers
|
61
|
+
def trans(s)
|
62
|
+
@trans.apply(@parser.parse(s))
|
63
|
+
rescue Parslet::ParseFailed => e
|
64
|
+
puts e.cause.ascii_tree
|
65
|
+
raise e
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csscss
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,24 +9,8 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: csspool
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '3.0'
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '3.0'
|
30
14
|
- !ruby/object:Gem::Dependency
|
31
15
|
name: parslet
|
32
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,9 +36,10 @@ extensions: []
|
|
52
36
|
extra_rdoc_files: []
|
53
37
|
files:
|
54
38
|
- .gitignore
|
55
|
-
- .rspec.default
|
56
39
|
- .travis.yml
|
40
|
+
- CHANGELOG.md
|
57
41
|
- Gemfile
|
42
|
+
- Gemfile.lock
|
58
43
|
- LICENSE.txt
|
59
44
|
- README.md
|
60
45
|
- Rakefile
|
@@ -62,14 +47,49 @@ files:
|
|
62
47
|
- csscss.gemspec
|
63
48
|
- lib/csscss.rb
|
64
49
|
- lib/csscss/cli.rb
|
50
|
+
- lib/csscss/json_reporter.rb
|
51
|
+
- lib/csscss/parser/background.rb
|
52
|
+
- lib/csscss/parser/base.rb
|
53
|
+
- lib/csscss/parser/border.rb
|
54
|
+
- lib/csscss/parser/border_color.rb
|
55
|
+
- lib/csscss/parser/border_side.rb
|
56
|
+
- lib/csscss/parser/border_style.rb
|
57
|
+
- lib/csscss/parser/border_width.rb
|
58
|
+
- lib/csscss/parser/color.rb
|
59
|
+
- lib/csscss/parser/common.rb
|
60
|
+
- lib/csscss/parser/css.rb
|
61
|
+
- lib/csscss/parser/font.rb
|
62
|
+
- lib/csscss/parser/list_style.rb
|
63
|
+
- lib/csscss/parser/margin.rb
|
64
|
+
- lib/csscss/parser/multi_side_transformer.rb
|
65
|
+
- lib/csscss/parser/outline.rb
|
66
|
+
- lib/csscss/parser/padding.rb
|
67
|
+
- lib/csscss/parslet_optimizations.rb
|
65
68
|
- lib/csscss/redundancy_analyzer.rb
|
66
69
|
- lib/csscss/reporter.rb
|
67
70
|
- lib/csscss/types.rb
|
68
71
|
- lib/csscss/version.rb
|
72
|
+
- test/csscss/json_reporter_test.rb
|
73
|
+
- test/csscss/parser/background_test.rb
|
74
|
+
- test/csscss/parser/border_color_test.rb
|
75
|
+
- test/csscss/parser/border_side_test.rb
|
76
|
+
- test/csscss/parser/border_style_test.rb
|
77
|
+
- test/csscss/parser/border_test.rb
|
78
|
+
- test/csscss/parser/border_width_test.rb
|
79
|
+
- test/csscss/parser/color_test.rb
|
80
|
+
- test/csscss/parser/common_test.rb
|
81
|
+
- test/csscss/parser/css_test.rb
|
82
|
+
- test/csscss/parser/font_test.rb
|
83
|
+
- test/csscss/parser/list_style_test.rb
|
84
|
+
- test/csscss/parser/margin_test.rb
|
85
|
+
- test/csscss/parser/outline_test.rb
|
86
|
+
- test/csscss/parser/padding_test.rb
|
69
87
|
- test/csscss/redundancy_analyzer_test.rb
|
70
88
|
- test/csscss/reporter_test.rb
|
89
|
+
- test/csscss/types_test.rb
|
90
|
+
- test/just_parse.rb
|
71
91
|
- test/test_helper.rb
|
72
|
-
homepage:
|
92
|
+
homepage: http://zmoazeni.github.com/csscss/
|
73
93
|
licenses: []
|
74
94
|
post_install_message:
|
75
95
|
rdoc_options: []
|
@@ -83,7 +103,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
83
103
|
version: '0'
|
84
104
|
segments:
|
85
105
|
- 0
|
86
|
-
hash:
|
106
|
+
hash: -4598443269162371706
|
87
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
108
|
none: false
|
89
109
|
requirements:
|
@@ -92,14 +112,32 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
112
|
version: '0'
|
93
113
|
segments:
|
94
114
|
- 0
|
95
|
-
hash:
|
115
|
+
hash: -4598443269162371706
|
96
116
|
requirements: []
|
97
117
|
rubyforge_project:
|
98
118
|
rubygems_version: 1.8.25
|
99
119
|
signing_key:
|
100
120
|
specification_version: 3
|
101
|
-
summary:
|
121
|
+
summary: csscss will parse any CSS files you give it and let you know which rulesets
|
122
|
+
have duplicated declarations.
|
102
123
|
test_files:
|
124
|
+
- test/csscss/json_reporter_test.rb
|
125
|
+
- test/csscss/parser/background_test.rb
|
126
|
+
- test/csscss/parser/border_color_test.rb
|
127
|
+
- test/csscss/parser/border_side_test.rb
|
128
|
+
- test/csscss/parser/border_style_test.rb
|
129
|
+
- test/csscss/parser/border_test.rb
|
130
|
+
- test/csscss/parser/border_width_test.rb
|
131
|
+
- test/csscss/parser/color_test.rb
|
132
|
+
- test/csscss/parser/common_test.rb
|
133
|
+
- test/csscss/parser/css_test.rb
|
134
|
+
- test/csscss/parser/font_test.rb
|
135
|
+
- test/csscss/parser/list_style_test.rb
|
136
|
+
- test/csscss/parser/margin_test.rb
|
137
|
+
- test/csscss/parser/outline_test.rb
|
138
|
+
- test/csscss/parser/padding_test.rb
|
103
139
|
- test/csscss/redundancy_analyzer_test.rb
|
104
140
|
- test/csscss/reporter_test.rb
|
141
|
+
- test/csscss/types_test.rb
|
142
|
+
- test/just_parse.rb
|
105
143
|
- test/test_helper.rb
|
data/.rspec.default
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
--debug
|