From 74592d643f3c38a9804a5a5adacbcc83ef11dacf Mon Sep 17 00:00:00 2001 From: mirceapiturca Date: Thu, 23 Aug 2012 18:27:52 +0300 Subject: [PATCH 1/3] Update build/node-parserlib.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MediaQuery mediaType and features needs to be joined trough "and". Not a big issue but window.matchMedia reports the MediaQuery .text as invalidĀ  --- build/node-parserlib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/node-parserlib.js b/build/node-parserlib.js index 89c1898a..752b8df0 100644 --- a/build/node-parserlib.js +++ b/build/node-parserlib.js @@ -1169,7 +1169,7 @@ MediaFeature.prototype.constructor = MediaFeature; */ function MediaQuery(modifier, mediaType, features, line, col){ - SyntaxUnit.call(this, (modifier ? modifier + " ": "") + (mediaType ? mediaType + " " : "") + features.join(" and "), line, col, Parser.MEDIA_QUERY_TYPE); + SyntaxUnit.call(this, (modifier ? modifier + " ": "") + (mediaType ? mediaType : "") + (mediaType && features.length > 0 ? " and " : "") + features.join(" and "), line, col, Parser.MEDIA_QUERY_TYPE); /** * The media modifier ("not" or "only") From 081dddbfe37fcfed4c9de9fbd3ca561401f5129f Mon Sep 17 00:00:00 2001 From: mirceapiturca Date: Fri, 24 Aug 2012 13:04:57 +0300 Subject: [PATCH 2/3] Update src/css/MediaQuery.js MediaQuery mediaType and features needs to be joined trough "and". For example parsing "only screen and (min-width:450px) and (max-width:1950px)", the text output will be "only screen (min-width:450px) and (max-width:1950px)". It is parsed right but the new text string will be invalid if matched with window.matchMedia. --- src/css/MediaQuery.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/css/MediaQuery.js b/src/css/MediaQuery.js index 3a1a048b..3e4b3e9f 100644 --- a/src/css/MediaQuery.js +++ b/src/css/MediaQuery.js @@ -13,7 +13,7 @@ */ function MediaQuery(modifier, mediaType, features, line, col){ - SyntaxUnit.call(this, (modifier ? modifier + " ": "") + (mediaType ? mediaType + " " : "") + features.join(" and "), line, col, Parser.MEDIA_QUERY_TYPE); + SyntaxUnit.call(this, (modifier ? modifier + " ": "") + (mediaType ? mediaType : "") + (mediaType && features.length > 0 ? " and " : "") + features.join(" and "), line, col, Parser.MEDIA_QUERY_TYPE); /** * The media modifier ("not" or "only") From a66dfbd2bb0083d1afa6369cd1f63cf1d901806c Mon Sep 17 00:00:00 2001 From: mirceapiturca Date: Wed, 12 Sep 2012 13:34:57 +0300 Subject: [PATCH 3/3] Update tests/css/Parser.js Added test for MediaQuery.text. --- tests/css/Parser.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/css/Parser.js b/tests/css/Parser.js index f3cb16a8..dab4096c 100644 --- a/tests/css/Parser.js +++ b/tests/css/Parser.js @@ -891,6 +891,7 @@ Assert.isNull(result.modifier); Assert.areEqual("print", result.mediaType); Assert.areEqual(0, result.features.length, "Should be zero parts."); + Assert.areEqual("print", result.text); }, testSimpleMediaQueryNot: function(){ @@ -903,6 +904,7 @@ Assert.areEqual("not", result.modifier); Assert.areEqual("print", result.mediaType); Assert.areEqual(0, result.features.length, "Should be zero parts."); + Assert.areEqual("not print", result.text); }, testSimpleMediaQueryOnly: function(){ @@ -915,6 +917,7 @@ Assert.areEqual("only", result.modifier); Assert.areEqual("print", result.mediaType); Assert.areEqual(0, result.features.length, "Should be zero parts."); + Assert.areEqual("only print", result.text); }, testComplexMediaQuery: function(){ @@ -933,6 +936,7 @@ Assert.areEqual("color", result.features[1].name); Assert.isNull(result.features[1].value); Assert.areEqual(35, result.features[1].name.col); + Assert.areEqual("screen and (max-weight: 3kg) and (color)", result.text); }, @@ -950,6 +954,7 @@ Assert.areEqual("768px", result.features[0].value); Assert.areEqual("orientation", result.features[1].name); Assert.areEqual("portrait", result.features[1].value); + Assert.areEqual("only screen and (max-device-width: 768px) and (orientation:portrait)", result.text); }