csscss 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|