scss-lint 0.4 → 0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,45 @@
1
+ require 'sass'
2
+ require 'set'
3
+
4
+ module SCSSLint
5
+ class Linter::DuplicateSelectorLinter < Linter
6
+ include LinterRegistry
7
+
8
+ class << self
9
+ def run(engine)
10
+ lints = []
11
+ engine.tree.each do |node|
12
+ if node.is_a?(Sass::Tree::RuleNode)
13
+ lints << check_selector_already_used(node)
14
+ end
15
+ end
16
+ lints.compact
17
+ end
18
+
19
+ def description
20
+ 'Rule was declared with same selector as another--you should merge them'
21
+ end
22
+
23
+ private
24
+
25
+ def check_selector_already_used(rule_node)
26
+ #selectors_seen = Set.new
27
+
28
+ puts rule_node.rule.inspect
29
+ puts rule_node.resolved_rules
30
+
31
+ #rule_node.children.each do |child|
32
+ #selectors = child.rule.first.to_s.gsub(/\s/, '')
33
+
34
+ #if selectors_seen.member?(selectors)
35
+ #return create_lint(child)
36
+ #else
37
+ #selectors_seen.add selectors
38
+ #end
39
+ #end
40
+
41
+ nil
42
+ end
43
+ end
44
+ end
45
+ end
@@ -23,23 +23,24 @@ module SCSSLint
23
23
 
24
24
  def check_valid_shorthand_value(prop_node)
25
25
  if prop_node.value.is_a?(Sass::Script::String) &&
26
- prop_node.value.to_s.strip =~ /\A(\S+\s+\S+\s+\S+(\s+\S+)?)\Z/
26
+ prop_node.value.to_s.strip =~ /\A(\S+\s+\S+(\s+\S+){0,2})\Z/
27
27
  return create_lint(prop_node) unless valid_shorthand?($1)
28
28
  end
29
29
  end
30
30
 
31
31
  def valid_shorthand?(shorthand)
32
32
  values = shorthand.split(/\s+/)
33
+ top, right, bottom, left = values
33
34
 
34
- if values[0] == values[1] &&
35
- values[1] == values[2] &&
36
- values[2] == values[3]
35
+ if top == right && right == bottom && bottom == left
37
36
  false
38
- elsif values[0] == values[2] && values[1] == values[3]
37
+ elsif top == right && bottom.nil? && left.nil?
39
38
  false
40
- elsif values[0] == values[2] && values[3].nil?
39
+ elsif top == bottom && right == left
41
40
  false
42
- elsif values[1] == values[3]
41
+ elsif top == bottom && left.nil?
42
+ false
43
+ elsif right == left
43
44
  false
44
45
  else
45
46
  true
@@ -1,3 +1,3 @@
1
1
  module SCSSLint
2
- VERSION = '0.4'
2
+ VERSION = '0.5'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scss-lint
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.4'
4
+ version: '0.5'
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-01-15 00:00:00.000000000 Z
12
+ date: 2013-01-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: colorize
@@ -73,6 +73,7 @@ files:
73
73
  - lib/scss_lint/lint.rb
74
74
  - lib/scss_lint/linter.rb
75
75
  - lib/scss_lint/linter/declaration_order_linter.rb
76
+ - lib/scss_lint/linter/duplicate_selector_linter.rb
76
77
  - lib/scss_lint/linter/empty_rule_linter.rb
77
78
  - lib/scss_lint/linter/debug_linter.rb
78
79
  - lib/scss_lint/linter/single_line_per_selector_linter.rb