diff --git a/src/rules/lowercase.js b/src/rules/lowercase.js new file mode 100644 index 00000000..e7a45496 --- /dev/null +++ b/src/rules/lowercase.js @@ -0,0 +1,32 @@ +/* + * Rule: properties and functions should be lowercase + */ + +CSSLint.addRule({ + + // rule information + id: "lowercase", + name: "Require lowercase properties and functions", + desc: "All properties and functions should be lowercase", + browsers: "All", + + // initialization + init: function(parser, reporter) { + "use strict"; + var rule = this; + + parser.addListener("property", function(event) { + var prop = event.property.text, + func = /([a-z\-]+)\(/i.exec(event.value.text); + + if (prop !== prop.toLowerCase()) { + reporter.report("Property is not lowercase.", event.line, event.col, rule); + } else if (func) { + if (func[1] !== func[1].toLowerCase()) { + reporter.report("Function is not lowercase.", event.line, event.col, rule); + } + } + }); + } + +}); diff --git a/tests/rules/lowercase.js b/tests/rules/lowercase.js new file mode 100644 index 00000000..2ac54210 --- /dev/null +++ b/tests/rules/lowercase.js @@ -0,0 +1,38 @@ +(function() { + "use strict"; + var Assert = YUITest.Assert; + + YUITest.TestRunner.add(new YUITest.TestCase({ + + name: "lowercase rule errors", + + "A property that is not in lowercase should result in a warning": function() { + var result = CSSLint.verify("h1 { Border-Radius: 5px; }", { "lowercase": 1 }); + + Assert.areEqual(1, result.messages.length); + Assert.areEqual("warning", result.messages[0].type); + Assert.areEqual("Property is not lowercase.", result.messages[0].message); + }, + + "A property that is in lowercase should not result in a warning": function() { + var result = CSSLint.verify("h1 { border-radius: 5px; }", { "lowercase": 1 }); + + Assert.areEqual(0, result.messages.length); + }, + + "A function that is not in lowercase should result in a warning": function() { + var result = CSSLint.verify("h1 { color: RGB(0, 0, 0); }", { "lowercase": 1 }); + + Assert.areEqual(1, result.messages.length); + Assert.areEqual("warning", result.messages[0].type); + Assert.areEqual("Function is not lowercase.", result.messages[0].message); + }, + + "A function that is in lowercase should not result in a warning": function() { + var result = CSSLint.verify("h1 { color: rgb(0, 0, 0); }", { "lowercase": 1 }); + + Assert.areEqual(0, result.messages.length); + } + })); + +})();