css_counter 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d29466a22fbcba30013eb4e93c7b52ac8ab2f7f9
4
- data.tar.gz: 5e46547c7b27fc99ac7a9cc5c1cde88ca2e9195b
3
+ metadata.gz: 119ea80024e35b6ff01ecb565b6d436f02dc8610
4
+ data.tar.gz: 6a50e0996f2c2a40f29e5b1ebe81be0a7f5e1551
5
5
  SHA512:
6
- metadata.gz: f737014b43feac1c75bb6d190a4f13f8052291c7c9bd7e90cd9fe9d37e32a5719a621641f5d26c216365fbac6ff328987c5508c3ef3c64cbea67fad9fa3a5478
7
- data.tar.gz: 72f6f09383d8386b86277e8792cbb8d20241e5137526a073013e0209b8838808641b9a5fba9df99bbd5b82678c367e879b9c059744b11d6b67d08871015bba19
6
+ metadata.gz: 3b5b1315deccefbaafdd29a59b0c24a06101f0937d60dd353dc6c0589950c55d3b91ddb477153e6ec8c537a0322c65dcccd7598954ffc38e7632307222f21d79
7
+ data.tar.gz: 20c16c7adf29446bd751673bbb48cedb00cd8b731daab11e3736e415c6fbae757fe29b7ed8142d60a1eff752d5641d2e30f1590be8e541a48c0cee4625f4ba68
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ v0.0.3 (14th February 2013)
2
+ * improve counting of some CSS3 selectors
3
+
1
4
  v0.0.2 (14th February 2013)
2
5
  * added a rake task for checking the CSS selector count from rails
3
6
 
data/lib/css_counter.rb CHANGED
@@ -15,25 +15,39 @@ class CssCounter
15
15
 
16
16
  def count_selectors_in_css_string(string)
17
17
  tree = Crass.parse(string)
18
- selector_count = tree.select { |item|
19
- item[:node] == :style_rule
20
- }.map { |item|
21
- item[:selector][:value].split(",")
22
- }.flatten.size
23
- media_queries = tree.select { |item|
24
- item[:node] == :at_rule && item[:name] == "media"
18
+ tree.map { |item|
19
+ count_selectors_in_node(item)
20
+ }.inject(0) { |accum, i|
21
+ accum += i
25
22
  }
26
- media_queries.each do |mq|
27
- selector_count += count_selectors_in_mq(string, mq)
23
+ end
24
+
25
+ def count_selectors_in_node(item)
26
+ case item[:node]
27
+ when :style_rule then count_selectors_in_style_rule(item)
28
+ when :at_rule then count_selectors_in_at_rule(item)
29
+ else
30
+ 0
28
31
  end
29
- selector_count
30
32
  end
31
33
 
32
- def count_selectors_in_mq(css, mq)
33
- startpos = mq[:block][:tokens][1][:pos]
34
- endpos = mq[:block][:tokens][-2][:pos]
35
- local_css = css[startpos, endpos-startpos]
36
- count_selectors_in_css_string(local_css)
34
+ def count_selectors_in_style_rule(item)
35
+ item[:selector][:value].split(",").size
36
+ end
37
+
38
+ def count_selectors_in_at_rule(item)
39
+ if item[:name] == "media"
40
+ startpos = item[:block][:tokens][1][:pos]
41
+ endpos = item[:block][:tokens][-2][:pos]
42
+ local_css = @css[startpos, endpos-startpos]
43
+ count_selectors_in_css_string(local_css) + 1
44
+ elsif item[:name] == "font-face"
45
+ 1
46
+ elsif item[:name] =~ /keyframes\Z/
47
+ item[:block][:value].select { |item| item[:node] == :percentage }.size
48
+ else
49
+ 0
50
+ end
37
51
  end
38
52
 
39
53
  end
@@ -35,16 +35,37 @@ describe CssCounter do
35
35
  let!(:input) { File.read(File.dirname(__FILE__) + "/fixtures/mediaquery.css") }
36
36
  subject { CssCounter.new(input).selectors }
37
37
 
38
+ it { should == 3 }
39
+ end
40
+
41
+ context "with charset.css" do
42
+ let!(:input) { File.read(File.dirname(__FILE__) + "/fixtures/charset.css") }
43
+ subject { CssCounter.new(input).selectors }
44
+
45
+ it { should == 1 }
46
+ end
47
+
48
+ context "with font-face.css" do
49
+ let!(:input) { File.read(File.dirname(__FILE__) + "/fixtures/font-face.css") }
50
+ subject { CssCounter.new(input).selectors }
51
+
38
52
  it { should == 2 }
39
53
  end
40
54
 
41
- context "with mediaquery.css" do
55
+ context "with keyframes.css" do
56
+ let!(:input) { File.read(File.dirname(__FILE__) + "/fixtures/keyframes.css") }
57
+ subject { CssCounter.new(input).selectors }
58
+
59
+ it { should == 9 }
60
+ end
61
+
62
+ context "with tc-application.css" do
42
63
  let!(:input) { File.read(File.dirname(__FILE__) + "/fixtures/tc-application.css") }
43
64
  subject { CssCounter.new(input).selectors }
44
65
 
45
66
  # TODO blesscss reports this file has 4467 selectors. Who is correct?
46
67
  #it { should == 4467 }
47
- it { should == 4326 }
68
+ it { should == 4461 }
48
69
  end
49
70
  end
50
71
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: css_counter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Healy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-13 00:00:00.000000000 Z
11
+ date: 2014-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake