From 2fe8c3d9d9553ca79aa60a63db6f42ba3a760a44 Mon Sep 17 00:00:00 2001 From: Thorben Bochenek Date: Sun, 10 Nov 2013 14:49:58 +0700 Subject: [PATCH 1/2] Fix Issue #339 in Python --- python/cssbeautifier/__init__.py | 15 +++++++++++++-- python/cssbeautifier/__version__.py | 2 +- python/cssbeautifier/tests/test.py | 6 ++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/python/cssbeautifier/__init__.py b/python/cssbeautifier/__init__.py index d057a0fe6..2f330745d 100644 --- a/python/cssbeautifier/__init__.py +++ b/python/cssbeautifier/__init__.py @@ -111,9 +111,11 @@ def closeBracket(self): self.output.append("}") self.newLine() + def at(self): + self.output.append("@") + def colon(self): self.output.append(":") - self.singleSpace() def semicolon(self): self.output.append(";") @@ -208,6 +210,7 @@ def beautify(self): printer = Printer(self.indentChar, self.indentSize, indentString) insideRule = False + ignoreOpenBracket = False while True: isAfterSpace = self.skipWhitespace() @@ -219,7 +222,14 @@ def beautify(self): header = self.lookBack("") if header: printer.push("\n\n") + elif self.ch == "@": + printer.at(); + ignoreOpenBracket = True elif self.ch == '{': + if ignoreOpenBracket: + ignoreOpenBracket = False + else: + insideRule = True self.eatWhitespace() if self.peek() == '}': self.next() @@ -234,7 +244,8 @@ def beautify(self): elif self.ch == ":": self.eatWhitespace() printer.colon() - insideRule = True + if insideRule: + printer.singleSpace() elif self.ch == '"' or self.ch == '\'': printer.push(self.eatString(self.ch)) elif self.ch == ';': diff --git a/python/cssbeautifier/__version__.py b/python/cssbeautifier/__version__.py index 1f356cc57..cd7ca4980 100644 --- a/python/cssbeautifier/__version__.py +++ b/python/cssbeautifier/__version__.py @@ -1 +1 @@ -__version__ = '1.0.0' +__version__ = '1.0.1' diff --git a/python/cssbeautifier/tests/test.py b/python/cssbeautifier/tests/test.py index 3087ff6d2..9bfd3a1c2 100644 --- a/python/cssbeautifier/tests/test.py +++ b/python/cssbeautifier/tests/test.py @@ -40,6 +40,12 @@ def testSeperateSelectors(self): t("#bla, #foo{color:red}", "#bla,\n#foo {\n\tcolor: red\n}\n") t("a, img {padding: 0.2px}", "a,\nimg {\n\tpadding: 0.2px\n}\n") + def testPseudeoselectors(self): + self.resetOptions() + t = self.decodesto + + t("a:hover{color:red}", "a:hover {\n\tcolor: red\n}\n") + t(".test:after{content:\"after\"}", ".test:after {\n\tcontent: \"after\"\n}\n") def testOptions(self): self.resetOptions() From 93fd82b240b5658a3c325b59cf3ea4eb44e94eb8 Mon Sep 17 00:00:00 2001 From: Thorben Bochenek Date: Sun, 10 Nov 2013 15:02:23 +0700 Subject: [PATCH 2/2] Port 2fe8c3d (Issue #339) to JavaScript --- js/lib/beautify-css.js | 15 +++++++++++++-- js/test/beautify-tests.js | 5 +++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/js/lib/beautify-css.js b/js/lib/beautify-css.js index 039443aa8..55fb16162 100644 --- a/js/lib/beautify-css.js +++ b/js/lib/beautify-css.js @@ -195,6 +195,7 @@ /*_____________________--------------------_____________________*/ var insideRule = false; + var ignoreOpenBracket = false; while (true) { var isAfterSpace = skipWhitespace(); @@ -207,7 +208,15 @@ if (header) { print.newLine(); } + } else if (ch === "@") { + output.push("@"); + ignoreOpenBracket = true; } else if (ch === '{') { + if (ignoreOpenBracket) { + ignoreOpenBracket = false; + } else { + insideRule = true; + } eatWhitespace(); if (peek() == '}') { next(); @@ -222,8 +231,10 @@ insideRule = false; } else if (ch === ":") { eatWhitespace(); - output.push(ch, " "); - insideRule = true; + output.push(ch); + if (insideRule) { + print.singleSpace(); + } } else if (ch === '"' || ch === '\'') { output.push(eatString(ch)); } else if (ch === ';') { diff --git a/js/test/beautify-tests.js b/js/test/beautify-tests.js index 4619cb868..630812f58 100755 --- a/js/test/beautify-tests.js +++ b/js/test/beautify-tests.js @@ -1744,6 +1744,11 @@ function run_beautifier_tests(test_obj, Urlencoded, js_beautify, html_beautify, btc("#bla, #foo{color:red}", "#bla,\n#foo {\n\tcolor: red\n}\n"); btc("a, img {padding: 0.2px}", "a,\nimg {\n\tpadding: 0.2px\n}\n"); + // pseudoselectors + btc("a:hover{color:red}", "a:hover {\n\tcolor: red\n}\n"); + btc(".test:after{content:\"after\"}", ".test:after {\n\tcontent: \"after\"\n}\n"); + + // test options opts.indent_size = 2; opts.indent_char = ' ';