Skip to content

Commit e8b1e91

Browse files
author
Nicholas C. Zakas
committed
Updated gradients rule with better messaging on warnings
1 parent 5fd4280 commit e8b1e91

2 files changed

Lines changed: 19 additions & 8 deletions

File tree

src/rules/gradients.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,18 @@ CSSLint.addRule({
1919
gradients = {
2020
moz: 0,
2121
webkit: 0,
22+
oldWebkit: 0,
2223
ms: 0,
2324
o: 0
2425
};
2526
});
2627

2728
parser.addListener("property", function(event){
2829

29-
if (/\-(moz|ms|o|webkit)(?:\-(?:linear|radial))\-gradient/.test(event.value)){
30+
if (/\-(moz|ms|o|webkit)(?:\-(?:linear|radial))\-gradient/i.test(event.value)){
3031
gradients[RegExp.$1] = 1;
32+
} else if (/\-webkit\-gradient/i.test(event.value)){
33+
gradients.oldWebkit = 1;
3134
}
3235

3336
});
@@ -40,7 +43,11 @@ CSSLint.addRule({
4043
}
4144

4245
if (!gradients.webkit){
43-
missing.push("Webkit (Safari, Chrome)");
46+
missing.push("Webkit (Safari 5+, Chrome)");
47+
}
48+
49+
if (!gradients.oldWebkit){
50+
missing.push("Old Webkit (Safari 4+, Chrome)");
4451
}
4552

4653
if (!gradients.ms){
@@ -51,7 +58,7 @@ CSSLint.addRule({
5158
missing.push("Opera 11.1+");
5259
}
5360

54-
if (missing.length && missing.length < 4){
61+
if (missing.length && missing.length < 5){
5562
reporter.report("Missing vendor-prefixed CSS gradients for " + missing.join(", ") + ".", event.selectors[0].line, event.selectors[0].col, rule);
5663
}
5764

tests/rules/gradients.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,32 +20,36 @@ background: -ms-linear-gradient(top, #1e5799 ,#2989d8 ,#207cca ,#7db9e8 );
2020
var result = CSSLint.verify(".foo { background: -moz-linear-gradient(top, #1e5799 , #2989d8 , #207cca , #7db9e8 ); }", {"gradients": 1 });
2121
Assert.areEqual(1, result.messages.length);
2222
Assert.areEqual("warning", result.messages[0].type);
23+
Assert.areEqual("Missing vendor-prefixed CSS gradients for Webkit (Safari 5+, Chrome), Old Webkit (Safari 4+, Chrome), Internet Explorer 10+, Opera 11.1+.", result.messages[0].message);
2324
},
2425

2526
"Only using Opera gradients should result in a warning": function(){
2627
var result = CSSLint.verify(".foo { background: -o-linear-gradient(top, #1e5799 , #2989d8 , #207cca , #7db9e8 ); }", {"gradients": 1 });
2728
Assert.areEqual(1, result.messages.length);
2829
Assert.areEqual("warning", result.messages[0].type);
30+
Assert.areEqual("Missing vendor-prefixed CSS gradients for Firefox 3.6+, Webkit (Safari 5+, Chrome), Old Webkit (Safari 4+, Chrome), Internet Explorer 10+.", result.messages[0].message);
2931
},
3032

3133
"Only using IE gradients should result in a warning": function(){
3234
var result = CSSLint.verify(".foo { background: -ms-linear-gradient(top, #1e5799 , #2989d8 , #207cca , #7db9e8 ); }", {"gradients": 1 });
3335
Assert.areEqual(1, result.messages.length);
3436
Assert.areEqual("warning", result.messages[0].type);
37+
Assert.areEqual("Missing vendor-prefixed CSS gradients for Firefox 3.6+, Webkit (Safari 5+, Chrome), Old Webkit (Safari 4+, Chrome), Opera 11.1+.", result.messages[0].message);
3538
},
3639

3740
"Only using WebKit gradients should result in a warning": function(){
3841
var result = CSSLint.verify(".foo { background: -webkit-linear-gradient(top, #1e5799 , #2989d8 , #207cca , #7db9e8 ); }", {"gradients": 1 });
3942
Assert.areEqual(1, result.messages.length);
4043
Assert.areEqual("warning", result.messages[0].type);
41-
}
44+
Assert.areEqual("Missing vendor-prefixed CSS gradients for Firefox 3.6+, Old Webkit (Safari 4+, Chrome), Internet Explorer 10+, Opera 11.1+.", result.messages[0].message);
45+
},
4246

43-
//parser barfs
44-
/*"Only using old WebKit gradients should result in a warning": function(){
45-
var result = CSSLint.verify(".foo { background: -webkit-gradient(linear, left top, left bottom, color-stop(,#1e5799), color-stop(,#2989d8), color-stop(,#207cca), color-stop(10,#7db9e8)); }", {"gradients": 1 });
47+
"Only using old WebKit gradients should result in a warning": function(){
48+
var result = CSSLint.verify(".foo { background: -webkit-gradient(linear, left top, left bottom, color-stop(10%,#1e5799), color-stop(20%,#2989d8), color-stop(30%,#207cca), color-stop(100%,#7db9e8)); }", {"gradients": 1 });
4649
Assert.areEqual(1, result.messages.length);
4750
Assert.areEqual("warning", result.messages[0].type);
48-
} */
51+
Assert.areEqual("Missing vendor-prefixed CSS gradients for Firefox 3.6+, Webkit (Safari 5+, Chrome), Internet Explorer 10+, Opera 11.1+.", result.messages[0].message);
52+
}
4953
}));
5054

5155
})();

0 commit comments

Comments
 (0)