lib/csscss/redundancy_analyzer.rb in csscss-0.2.0 vs lib/csscss/redundancy_analyzer.rb in csscss-0.2.1
- old
+ new
@@ -85,18 +85,22 @@
end
end
# combines selector keys by common declarations
final_inverted_matches = inverted_matches.dup
- inverted_matches.to_a[0..-2].each_with_index do |(selector_group1, declarations1), index|
+ inverted_matches.to_a.each_with_index do |(selector_group1, declarations1), index|
+ keys = [selector_group1]
inverted_matches.to_a[(index + 1)..-1].each do |selector_group2, declarations2|
- if declarations1 == declarations2
- final_inverted_matches.delete(selector_group1)
+ if declarations1 == declarations2 && final_inverted_matches[selector_group2]
+ keys << selector_group2
final_inverted_matches.delete(selector_group2)
- key = (selector_group1 + selector_group2).sort.uniq
- final_inverted_matches[key] ||= []
- final_inverted_matches[key].concat(declarations1 + declarations2).uniq!
end
+ end
+
+ if keys.size > 1
+ final_inverted_matches.delete(selector_group1)
+ key = keys.flatten.sort.uniq
+ final_inverted_matches[key] = declarations1
end
end
# sort hash by number of matches
sorted_array = final_inverted_matches.sort {|(_, v1), (_, v2)| v2.size <=> v1.size }