From 757301beb9ba2022aa9f140816c38127f9a2ade1 Mon Sep 17 00:00:00 2001 From: "Nicholas C. Zakas" Date: Fri, 2 Mar 2012 14:47:50 -0800 Subject: [PATCH] Version 0.9.7 --- CHANGELOG | 7 +++++++ build.xml | 2 +- lib/parserlib.js | 7 ++++--- release/csslint-node.js | 15 ++++++++------- release/csslint-rhino.js | 15 ++++++++------- release/csslint-tests.js | 6 ++++++ release/csslint-worker.js | 15 ++++++++------- release/csslint-wsh.js | 15 ++++++++------- release/csslint.js | 15 ++++++++------- release/npm/cli.js | 2 +- release/npm/lib/csslint-node.js | 15 ++++++++------- release/npm/package.json | 2 +- 12 files changed, 68 insertions(+), 48 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 0d330a5e..0ee665aa 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +March 2, 2012 - v0.9.7 + +* Fix unqualified attribute issue (fixes #237) (Nicholas C. Zakas) + + February 10, 2012 - v0.9.6 * Make sure line numbers are correct for vendor-prefix rule (fixes #238) (Nicholas C. Zakas) @@ -247,6 +252,8 @@ June 15, 2011 - v0.1.0 + + diff --git a/build.xml b/build.xml index 22fdc2fc..e871cab3 100644 --- a/build.xml +++ b/build.xml @@ -1,7 +1,7 @@ - + diff --git a/lib/parserlib.js b/lib/parserlib.js index 58a753b7..ec1090c1 100644 --- a/lib/parserlib.js +++ b/lib/parserlib.js @@ -21,7 +21,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Version v0.1.5, Build time: 10-February-2012 12:59:26 */ +/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */ var parserlib = {}; (function(){ @@ -931,7 +931,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Version v0.1.5, Build time: 10-February-2012 12:59:26 */ +/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */ (function(){ var EventTarget = parserlib.util.EventTarget, TokenStreamBase = parserlib.util.TokenStreamBase, @@ -3179,7 +3179,7 @@ Parser.prototype = function(){ while(true){ - if (readMargins && this._margin()){ + if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())){ //noop } else if (this._declaration()){ if (!tokenStream.match(Tokens.SEMICOLON)){ @@ -4121,6 +4121,7 @@ function PropertyValuePart(text, line, col){ case "in": case "pt": case "pc": + case "ch": this.type = "length"; break; diff --git a/release/csslint-node.js b/release/csslint-node.js index 7522c3a1..8c248d99 100644 --- a/release/csslint-node.js +++ b/release/csslint-node.js @@ -21,7 +21,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Build time: 10-February-2012 02:34:15 */ +/* Build time: 2-March-2012 02:47:11 */ /*! Parser-Lib @@ -46,7 +46,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Version v0.1.5, Build time: 10-February-2012 12:59:26 */ +/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */ var parserlib = {}; (function(){ @@ -956,7 +956,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Version v0.1.5, Build time: 10-February-2012 12:59:26 */ +/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */ (function(){ var EventTarget = parserlib.util.EventTarget, TokenStreamBase = parserlib.util.TokenStreamBase, @@ -3204,7 +3204,7 @@ Parser.prototype = function(){ while(true){ - if (readMargins && this._margin()){ + if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())){ //noop } else if (this._declaration()){ if (!tokenStream.match(Tokens.SEMICOLON)){ @@ -4146,6 +4146,7 @@ function PropertyValuePart(text, line, col){ case "in": case "pt": case "pc": + case "ch": this.type = "length"; break; @@ -6304,7 +6305,7 @@ var CSSLint = (function(){ formatters = [], api = new parserlib.util.EventTarget(); - api.version = "0.9.6"; + api.version = "0.9.7"; //------------------------------------------------------------------------- // Rule Management @@ -8478,8 +8479,8 @@ CSSLint.addRule({ if (part.type == parser.SELECTOR_PART_TYPE){ for (k=0; k < part.modifiers.length; k++){ modifier = part.modifiers[k]; - if (modifier.type == "attribute" && (!modifier.elementName || modifier.elementName == "*")){ - reporter.report(rule.desc, modifier.line, modifier.col, rule); + if (modifier.type == "attribute" && (!part.elementName || part.elementName == "*")){ + reporter.report(rule.desc, part.line, part.col, rule); } } } diff --git a/release/csslint-rhino.js b/release/csslint-rhino.js index 3f2ee929..83fe77a4 100644 --- a/release/csslint-rhino.js +++ b/release/csslint-rhino.js @@ -21,7 +21,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Build time: 10-February-2012 02:34:15 */ +/* Build time: 2-March-2012 02:47:11 */ var CSSLint = (function(){ /*! @@ -47,7 +47,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Version v0.1.5, Build time: 10-February-2012 12:59:26 */ +/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */ var parserlib = {}; (function(){ @@ -957,7 +957,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Version v0.1.5, Build time: 10-February-2012 12:59:26 */ +/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */ (function(){ var EventTarget = parserlib.util.EventTarget, TokenStreamBase = parserlib.util.TokenStreamBase, @@ -3205,7 +3205,7 @@ Parser.prototype = function(){ while(true){ - if (readMargins && this._margin()){ + if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())){ //noop } else if (this._declaration()){ if (!tokenStream.match(Tokens.SEMICOLON)){ @@ -4147,6 +4147,7 @@ function PropertyValuePart(text, line, col){ case "in": case "pt": case "pc": + case "ch": this.type = "length"; break; @@ -6305,7 +6306,7 @@ var CSSLint = (function(){ formatters = [], api = new parserlib.util.EventTarget(); - api.version = "0.9.6"; + api.version = "0.9.7"; //------------------------------------------------------------------------- // Rule Management @@ -8479,8 +8480,8 @@ CSSLint.addRule({ if (part.type == parser.SELECTOR_PART_TYPE){ for (k=0; k < part.modifiers.length; k++){ modifier = part.modifiers[k]; - if (modifier.type == "attribute" && (!modifier.elementName || modifier.elementName == "*")){ - reporter.report(rule.desc, modifier.line, modifier.col, rule); + if (modifier.type == "attribute" && (!part.elementName || part.elementName == "*")){ + reporter.report(rule.desc, part.line, part.col, rule); } } } diff --git a/release/csslint-tests.js b/release/csslint-tests.js index cdca04f6..bcb67e26 100644 --- a/release/csslint-tests.js +++ b/release/csslint-tests.js @@ -1718,8 +1718,14 @@ background: -ms-linear-gradient(top, #1e5799 ,#2989d8 ,#207cca ,#7db9e8 ); "Using an unqualified attribute selector in the middle should not result in a warning": function(){ var result = CSSLint.verify("[type=text] .foo { font-size: 10px; } ", {"unqualified-attributes": 1 }); Assert.areEqual(0, result.messages.length); + }, + + "Using a qualified attribute selector should not result in a warning": function(){ + var result = CSSLint.verify("input[type=text] { font-size: 10px; } ", {"unqualified-attributes": 1 }); + Assert.areEqual(0, result.messages.length); } + })); })(); diff --git a/release/csslint-worker.js b/release/csslint-worker.js index c5e44c03..99831e96 100644 --- a/release/csslint-worker.js +++ b/release/csslint-worker.js @@ -21,7 +21,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Build time: 10-February-2012 02:34:15 */ +/* Build time: 2-March-2012 02:47:11 */ /*! Parser-Lib @@ -46,7 +46,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Version v0.1.5, Build time: 10-February-2012 12:59:26 */ +/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */ var parserlib = {}; (function(){ @@ -956,7 +956,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Version v0.1.5, Build time: 10-February-2012 12:59:26 */ +/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */ (function(){ var EventTarget = parserlib.util.EventTarget, TokenStreamBase = parserlib.util.TokenStreamBase, @@ -3204,7 +3204,7 @@ Parser.prototype = function(){ while(true){ - if (readMargins && this._margin()){ + if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())){ //noop } else if (this._declaration()){ if (!tokenStream.match(Tokens.SEMICOLON)){ @@ -4146,6 +4146,7 @@ function PropertyValuePart(text, line, col){ case "in": case "pt": case "pc": + case "ch": this.type = "length"; break; @@ -6304,7 +6305,7 @@ var CSSLint = (function(){ formatters = [], api = new parserlib.util.EventTarget(); - api.version = "0.9.6"; + api.version = "0.9.7"; //------------------------------------------------------------------------- // Rule Management @@ -8478,8 +8479,8 @@ CSSLint.addRule({ if (part.type == parser.SELECTOR_PART_TYPE){ for (k=0; k < part.modifiers.length; k++){ modifier = part.modifiers[k]; - if (modifier.type == "attribute" && (!modifier.elementName || modifier.elementName == "*")){ - reporter.report(rule.desc, modifier.line, modifier.col, rule); + if (modifier.type == "attribute" && (!part.elementName || part.elementName == "*")){ + reporter.report(rule.desc, part.line, part.col, rule); } } } diff --git a/release/csslint-wsh.js b/release/csslint-wsh.js index 015111ca..0fb8b57e 100644 --- a/release/csslint-wsh.js +++ b/release/csslint-wsh.js @@ -21,7 +21,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Build time: 10-February-2012 02:34:15 */ +/* Build time: 2-March-2012 02:47:11 */ var CSSLint = (function(){ /*! @@ -47,7 +47,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Version v0.1.5, Build time: 10-February-2012 12:59:26 */ +/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */ var parserlib = {}; (function(){ @@ -957,7 +957,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Version v0.1.5, Build time: 10-February-2012 12:59:26 */ +/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */ (function(){ var EventTarget = parserlib.util.EventTarget, TokenStreamBase = parserlib.util.TokenStreamBase, @@ -3205,7 +3205,7 @@ Parser.prototype = function(){ while(true){ - if (readMargins && this._margin()){ + if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())){ //noop } else if (this._declaration()){ if (!tokenStream.match(Tokens.SEMICOLON)){ @@ -4147,6 +4147,7 @@ function PropertyValuePart(text, line, col){ case "in": case "pt": case "pc": + case "ch": this.type = "length"; break; @@ -6305,7 +6306,7 @@ var CSSLint = (function(){ formatters = [], api = new parserlib.util.EventTarget(); - api.version = "0.9.6"; + api.version = "0.9.7"; //------------------------------------------------------------------------- // Rule Management @@ -8479,8 +8480,8 @@ CSSLint.addRule({ if (part.type == parser.SELECTOR_PART_TYPE){ for (k=0; k < part.modifiers.length; k++){ modifier = part.modifiers[k]; - if (modifier.type == "attribute" && (!modifier.elementName || modifier.elementName == "*")){ - reporter.report(rule.desc, modifier.line, modifier.col, rule); + if (modifier.type == "attribute" && (!part.elementName || part.elementName == "*")){ + reporter.report(rule.desc, part.line, part.col, rule); } } } diff --git a/release/csslint.js b/release/csslint.js index 33625906..fe9c0d07 100644 --- a/release/csslint.js +++ b/release/csslint.js @@ -21,7 +21,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Build time: 10-February-2012 02:34:15 */ +/* Build time: 2-March-2012 02:47:11 */ var CSSLint = (function(){ /*! @@ -47,7 +47,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Version v0.1.5, Build time: 10-February-2012 12:59:26 */ +/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */ var parserlib = {}; (function(){ @@ -957,7 +957,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Version v0.1.5, Build time: 10-February-2012 12:59:26 */ +/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */ (function(){ var EventTarget = parserlib.util.EventTarget, TokenStreamBase = parserlib.util.TokenStreamBase, @@ -3205,7 +3205,7 @@ Parser.prototype = function(){ while(true){ - if (readMargins && this._margin()){ + if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())){ //noop } else if (this._declaration()){ if (!tokenStream.match(Tokens.SEMICOLON)){ @@ -4147,6 +4147,7 @@ function PropertyValuePart(text, line, col){ case "in": case "pt": case "pc": + case "ch": this.type = "length"; break; @@ -6305,7 +6306,7 @@ var CSSLint = (function(){ formatters = [], api = new parserlib.util.EventTarget(); - api.version = "0.9.6"; + api.version = "0.9.7"; //------------------------------------------------------------------------- // Rule Management @@ -8479,8 +8480,8 @@ CSSLint.addRule({ if (part.type == parser.SELECTOR_PART_TYPE){ for (k=0; k < part.modifiers.length; k++){ modifier = part.modifiers[k]; - if (modifier.type == "attribute" && (!modifier.elementName || modifier.elementName == "*")){ - reporter.report(rule.desc, modifier.line, modifier.col, rule); + if (modifier.type == "attribute" && (!part.elementName || part.elementName == "*")){ + reporter.report(rule.desc, part.line, part.col, rule); } } } diff --git a/release/npm/cli.js b/release/npm/cli.js index 88af2191..bc7bcc78 100644 --- a/release/npm/cli.js +++ b/release/npm/cli.js @@ -1,5 +1,5 @@ #!/usr/bin/env node -/* Build time: 10-February-2012 02:34:15 */ +/* Build time: 2-March-2012 02:47:11 */ /* * Encapsulates all of the CLI functionality. The api argument simply diff --git a/release/npm/lib/csslint-node.js b/release/npm/lib/csslint-node.js index 7522c3a1..8c248d99 100644 --- a/release/npm/lib/csslint-node.js +++ b/release/npm/lib/csslint-node.js @@ -21,7 +21,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Build time: 10-February-2012 02:34:15 */ +/* Build time: 2-March-2012 02:47:11 */ /*! Parser-Lib @@ -46,7 +46,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Version v0.1.5, Build time: 10-February-2012 12:59:26 */ +/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */ var parserlib = {}; (function(){ @@ -956,7 +956,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Version v0.1.5, Build time: 10-February-2012 12:59:26 */ +/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */ (function(){ var EventTarget = parserlib.util.EventTarget, TokenStreamBase = parserlib.util.TokenStreamBase, @@ -3204,7 +3204,7 @@ Parser.prototype = function(){ while(true){ - if (readMargins && this._margin()){ + if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())){ //noop } else if (this._declaration()){ if (!tokenStream.match(Tokens.SEMICOLON)){ @@ -4146,6 +4146,7 @@ function PropertyValuePart(text, line, col){ case "in": case "pt": case "pc": + case "ch": this.type = "length"; break; @@ -6304,7 +6305,7 @@ var CSSLint = (function(){ formatters = [], api = new parserlib.util.EventTarget(); - api.version = "0.9.6"; + api.version = "0.9.7"; //------------------------------------------------------------------------- // Rule Management @@ -8478,8 +8479,8 @@ CSSLint.addRule({ if (part.type == parser.SELECTOR_PART_TYPE){ for (k=0; k < part.modifiers.length; k++){ modifier = part.modifiers[k]; - if (modifier.type == "attribute" && (!modifier.elementName || modifier.elementName == "*")){ - reporter.report(rule.desc, modifier.line, modifier.col, rule); + if (modifier.type == "attribute" && (!part.elementName || part.elementName == "*")){ + reporter.report(rule.desc, part.line, part.col, rule); } } } diff --git a/release/npm/package.json b/release/npm/package.json index 602c32e8..9e04531a 100644 --- a/release/npm/package.json +++ b/release/npm/package.json @@ -1,6 +1,6 @@ { "name": "csslint", - "version": "0.9.6", + "version": "0.9.7", "description": "CSSLint", "author": "Nicholas C. Zakas", "os": ["darwin", "linux"],