csscss 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +1 -1
- data/lib/csscss/redundancy_analyzer.rb +10 -6
- data/lib/csscss/reporter.rb +2 -2
- data/lib/csscss/version.rb +1 -1
- data/test/csscss/redundancy_analyzer_test.rb +59 -1
- metadata +4 -4
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -87,16 +87,20 @@ module Csscss
|
|
87
87
|
|
88
88
|
# combines selector keys by common declarations
|
89
89
|
final_inverted_matches = inverted_matches.dup
|
90
|
-
inverted_matches.to_a
|
90
|
+
inverted_matches.to_a.each_with_index do |(selector_group1, declarations1), index|
|
91
|
+
keys = [selector_group1]
|
91
92
|
inverted_matches.to_a[(index + 1)..-1].each do |selector_group2, declarations2|
|
92
|
-
if declarations1 == declarations2
|
93
|
-
|
93
|
+
if declarations1 == declarations2 && final_inverted_matches[selector_group2]
|
94
|
+
keys << selector_group2
|
94
95
|
final_inverted_matches.delete(selector_group2)
|
95
|
-
key = (selector_group1 + selector_group2).sort.uniq
|
96
|
-
final_inverted_matches[key] ||= []
|
97
|
-
final_inverted_matches[key].concat(declarations1 + declarations2).uniq!
|
98
96
|
end
|
99
97
|
end
|
98
|
+
|
99
|
+
if keys.size > 1
|
100
|
+
final_inverted_matches.delete(selector_group1)
|
101
|
+
key = keys.flatten.sort.uniq
|
102
|
+
final_inverted_matches[key] = declarations1
|
103
|
+
end
|
100
104
|
end
|
101
105
|
|
102
106
|
# sort hash by number of matches
|
data/lib/csscss/reporter.rb
CHANGED
@@ -10,12 +10,12 @@ module Csscss
|
|
10
10
|
|
11
11
|
io = StringIO.new
|
12
12
|
@redundancies.each do |selector_groups, declarations|
|
13
|
-
selector_groups = selector_groups.map {|selectors|
|
13
|
+
selector_groups = selector_groups.map {|selectors| "{#{maybe_color(selectors, :red, should_color)}}" }
|
14
14
|
last_selector = selector_groups.pop
|
15
15
|
count = declarations.size
|
16
16
|
io.puts %Q(#{selector_groups.join(", ")} AND #{last_selector} share #{maybe_color(count, :red, should_color)} rule#{"s" if count > 1})
|
17
17
|
if verbose
|
18
|
-
declarations.each {|dec| io.puts(
|
18
|
+
declarations.each {|dec| io.puts(" - #{maybe_color(dec, :yellow, should_color)}") }
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
data/lib/csscss/version.rb
CHANGED
@@ -76,10 +76,68 @@ module Csscss
|
|
76
76
|
-moz-box-shadow: 1px 1px 10px #CCCCCC;
|
77
77
|
-webkit-box-shadow: 1px 1px 10px #CCCCCC;
|
78
78
|
}
|
79
|
+
|
80
|
+
.bar2 {
|
81
|
+
background: white;
|
82
|
+
|
83
|
+
-webkit-border-radius: 4px;
|
84
|
+
-moz-border-radius: 4px;
|
85
|
+
box-shadow: 1px 1px 10px #CCCCCC;
|
86
|
+
-moz-box-shadow: 1px 1px 10px #CCCCCC;
|
87
|
+
-webkit-box-shadow: 1px 1px 10px #CCCCCC;
|
88
|
+
}
|
79
89
|
$
|
80
90
|
|
81
91
|
redundancies = RedundancyAnalyzer.new(css).redundancies(3)
|
82
|
-
redundancies[[sel(".bar"), sel(".baz")]].size.must_equal(5)
|
92
|
+
redundancies[[sel(".bar"), sel(".bar2"), sel(".baz")]].size.must_equal(5)
|
93
|
+
end
|
94
|
+
|
95
|
+
it "correctly finds counts with 3+ shared rules" do
|
96
|
+
css = %$
|
97
|
+
.foo1 {
|
98
|
+
background: white;
|
99
|
+
|
100
|
+
-webkit-border-radius: 4px;
|
101
|
+
-moz-border-radius: 4px;
|
102
|
+
box-shadow: 1px 1px 10px #CCCCCC;
|
103
|
+
-moz-box-shadow: 1px 1px 10px #CCCCCC;
|
104
|
+
-webkit-box-shadow: 1px 1px 10px #CCCCCC;
|
105
|
+
}
|
106
|
+
|
107
|
+
.foo2 {
|
108
|
+
background: white;
|
109
|
+
|
110
|
+
-webkit-border-radius: 4px;
|
111
|
+
-moz-border-radius: 4px;
|
112
|
+
box-shadow: 1px 1px 10px #CCCCCC;
|
113
|
+
-moz-box-shadow: 1px 1px 10px #CCCCCC;
|
114
|
+
-webkit-box-shadow: 1px 1px 10px #CCCCCC;
|
115
|
+
}
|
116
|
+
|
117
|
+
.foo3 {
|
118
|
+
background: white;
|
119
|
+
|
120
|
+
-webkit-border-radius: 4px;
|
121
|
+
-moz-border-radius: 4px;
|
122
|
+
box-shadow: 1px 1px 10px #CCCCCC;
|
123
|
+
-moz-box-shadow: 1px 1px 10px #CCCCCC;
|
124
|
+
-webkit-box-shadow: 1px 1px 10px #CCCCCC;
|
125
|
+
}
|
126
|
+
|
127
|
+
.foo4 {
|
128
|
+
background: white;
|
129
|
+
|
130
|
+
-webkit-border-radius: 4px;
|
131
|
+
-moz-border-radius: 4px;
|
132
|
+
box-shadow: 1px 1px 10px #CCCCCC;
|
133
|
+
-moz-box-shadow: 1px 1px 10px #CCCCCC;
|
134
|
+
-webkit-box-shadow: 1px 1px 10px #CCCCCC;
|
135
|
+
}
|
136
|
+
$
|
137
|
+
|
138
|
+
redundancies = RedundancyAnalyzer.new(css).redundancies
|
139
|
+
redundancies.keys.size.must_equal 1
|
140
|
+
redundancies[[sel(".foo1"), sel(".foo2"), sel(".foo3"), sel(".foo4")]].size.must_equal(6)
|
83
141
|
end
|
84
142
|
|
85
143
|
it "also matches shorthand rules" do
|
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.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: parslet
|
@@ -120,7 +120,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
120
120
|
version: '0'
|
121
121
|
segments:
|
122
122
|
- 0
|
123
|
-
hash: -
|
123
|
+
hash: -1849161592586961535
|
124
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
125
|
none: false
|
126
126
|
requirements:
|
@@ -129,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
129
|
version: '0'
|
130
130
|
segments:
|
131
131
|
- 0
|
132
|
-
hash: -
|
132
|
+
hash: -1849161592586961535
|
133
133
|
requirements: []
|
134
134
|
rubyforge_project:
|
135
135
|
rubygems_version: 1.8.25
|