mirror of
https://github.com/beautifier/js-beautify.git
synced 2024-11-27 06:30:32 +00:00
parent
6b90203837
commit
2b13664b4f
@ -81,6 +81,7 @@
|
||||
|
||||
var pos = -1,
|
||||
ch;
|
||||
var parenLevel = 0;
|
||||
|
||||
function next() {
|
||||
ch = source_text.charAt(++pos);
|
||||
@ -123,7 +124,7 @@
|
||||
function eatWhitespace() {
|
||||
var result = '';
|
||||
while (whiteRe.test(peek())) {
|
||||
next()
|
||||
next();
|
||||
result += ch;
|
||||
}
|
||||
return result;
|
||||
@ -135,14 +136,14 @@
|
||||
result = ch;
|
||||
}
|
||||
while (whiteRe.test(next())) {
|
||||
result += ch
|
||||
result += ch;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function eatComment(singleLine) {
|
||||
var start = pos;
|
||||
var singleLine = peek() === "/";
|
||||
singleLine = peek() === "/";
|
||||
next();
|
||||
while (next()) {
|
||||
if (!singleLine && ch === "*" && peek() === "/") {
|
||||
@ -249,8 +250,8 @@
|
||||
var whitespace = skipWhitespace();
|
||||
var isAfterSpace = whitespace !== '';
|
||||
var isAfterNewline = whitespace.indexOf('\n') !== -1;
|
||||
var last_top_ch = top_ch;
|
||||
var top_ch = ch;
|
||||
last_top_ch = top_ch;
|
||||
top_ch = ch;
|
||||
|
||||
if (!ch) {
|
||||
break;
|
||||
@ -364,6 +365,7 @@
|
||||
}
|
||||
}
|
||||
} else {
|
||||
parenLevel++;
|
||||
if (isAfterSpace) {
|
||||
print.singleSpace();
|
||||
}
|
||||
@ -372,10 +374,11 @@
|
||||
}
|
||||
} else if (ch === ')') {
|
||||
output.push(ch);
|
||||
parenLevel--;
|
||||
} else if (ch === ',') {
|
||||
output.push(ch);
|
||||
eatWhitespace();
|
||||
if (!insideRule && selectorSeparatorNewline) {
|
||||
if (!insideRule && selectorSeparatorNewline && parenLevel < 1) {
|
||||
print.newLine();
|
||||
} else {
|
||||
print.singleSpace();
|
||||
|
@ -112,6 +112,16 @@ function run_css_tests(test_obj, Urlencoded, js_beautify, html_beautify, css_bea
|
||||
t('@font-face {\n\tfont-family: "Bitstream Vera Serif Bold";\n\tsrc: url("http://developer.mozilla.org/@api/deki/files/2934/=VeraSeBd.ttf");\n}\n@media screen {\n\t#foo:hover {\n\t\tbackground-image: url(foo.png);\n\t}\n\t@media screen and (min-device-pixel-ratio: 2) {\n\t\t@font-face {\n\t\t\tfont-family: "Helvetica Neue"\n\t\t}\n\t\t#foo:hover {\n\t\t\tbackground-image: url(foo@2x.png);\n\t\t}\n\t}\n}');
|
||||
t('a:first-child{color:red;div:first-child{color:black;}}\n.div{height:15px;}', 'a:first-child {\n\tcolor: red;\n\tdiv:first-child {\n\t\tcolor: black;\n\t}\n}\n.div {\n\theight: 15px;\n}');
|
||||
|
||||
// Functions braces
|
||||
t('.tabs(){}', '.tabs() {}');
|
||||
t('.tabs (){}', '.tabs () {}');
|
||||
t('.tabs (pa, pa(1,2)), .cols { }', '.tabs (pa, pa(1, 2)),\n.cols {}');
|
||||
t('.tabs(pa, pa(1,2)), .cols { }', '.tabs(pa, pa(1, 2)),\n.cols {}');
|
||||
t('.tabs ( ) { }', '.tabs () {}');
|
||||
t('.tabs( ) { }', '.tabs() {}');
|
||||
t('.tabs (t, t2) \n{\n key: val(p1 ,p2); \n }', '.tabs (t, t2) {\n\tkey: val(p1, p2);\n}');
|
||||
t('.box-shadow(@shadow: 0 1px 3px rgba(0, 0, 0, .25)) {\n\t-webkit-box-shadow: @shadow;\n\t-moz-box-shadow: @shadow;\n\tbox-shadow: @shadow;\n}');
|
||||
|
||||
//
|
||||
|
||||
// test basic css beautifier
|
||||
|
@ -270,6 +270,7 @@ class Beautifier:
|
||||
enteringConditionalGroup = False
|
||||
top_ch = ''
|
||||
last_top_ch = ''
|
||||
parenLevel = 0
|
||||
|
||||
while True:
|
||||
whitespace = self.skipWhitespace();
|
||||
@ -384,16 +385,18 @@ class Beautifier:
|
||||
else:
|
||||
self.pos = self.pos - 1
|
||||
else:
|
||||
parenLevel += 1
|
||||
if isAfterSpace:
|
||||
printer.singleSpace()
|
||||
printer.push(self.ch)
|
||||
self.eatWhitespace()
|
||||
elif self.ch == ')':
|
||||
printer.push(self.ch)
|
||||
parenLevel -= 1
|
||||
elif self.ch == ',':
|
||||
printer.push(self.ch)
|
||||
self.eatWhitespace()
|
||||
if not insideRule and self.opts.selector_separator_newline:
|
||||
if not insideRule and self.opts.selector_separator_newline and parenLevel < 1:
|
||||
printer.newLine()
|
||||
else:
|
||||
printer.singleSpace()
|
||||
|
@ -77,6 +77,16 @@ class CSSBeautifierTest(unittest.TestCase):
|
||||
t('@font-face {\n\tfont-family: "Bitstream Vera Serif Bold";\n\tsrc: url("http://developer.mozilla.org/@api/deki/files/2934/=VeraSeBd.ttf");\n}\n@media screen {\n\t#foo:hover {\n\t\tbackground-image: url(foo.png);\n\t}\n\t@media screen and (min-device-pixel-ratio: 2) {\n\t\t@font-face {\n\t\t\tfont-family: "Helvetica Neue"\n\t\t}\n\t\t#foo:hover {\n\t\t\tbackground-image: url(foo@2x.png);\n\t\t}\n\t}\n}')
|
||||
t('a:first-child{color:red;div:first-child{color:black;}}\n.div{height:15px;}', 'a:first-child {\n\tcolor: red;\n\tdiv:first-child {\n\t\tcolor: black;\n\t}\n}\n.div {\n\theight: 15px;\n}')
|
||||
|
||||
# Functions braces
|
||||
t('.tabs(){}', '.tabs() {}')
|
||||
t('.tabs (){}', '.tabs () {}')
|
||||
t('.tabs (pa, pa(1,2)), .cols { }', '.tabs (pa, pa(1, 2)),\n.cols {}')
|
||||
t('.tabs(pa, pa(1,2)), .cols { }', '.tabs(pa, pa(1, 2)),\n.cols {}')
|
||||
t('.tabs ( ) { }', '.tabs () {}')
|
||||
t('.tabs( ) { }', '.tabs() {}')
|
||||
t('.tabs (t, t2) \n{\n key: val(p1 ,p2); \n }', '.tabs (t, t2) {\n\tkey: val(p1, p2);\n}')
|
||||
t('.box-shadow(@shadow: 0 1px 3px rgba(0, 0, 0, .25)) {\n\t-webkit-box-shadow: @shadow;\n\t-moz-box-shadow: @shadow;\n\tbox-shadow: @shadow;\n}')
|
||||
|
||||
#
|
||||
|
||||
|
||||
|
@ -76,6 +76,19 @@ exports.test_data = {
|
||||
{ input: 'a:first-child{color:red;div:first-child{color:black;}}\n.div{height:15px;}', output: 'a:first-child {\n\tcolor: red;\n\tdiv:first-child {\n\t\tcolor: black;\n\t}\n}\n{{separator}}.div {\n\theight: 15px;\n}'},
|
||||
],
|
||||
}, {
|
||||
name: "Functions braces",
|
||||
description: "",
|
||||
tests: [
|
||||
{ input: '.tabs(){}', output: '.tabs() {}' },
|
||||
{ input: '.tabs (){}', output: '.tabs () {}' },
|
||||
{ input: '.tabs (pa, pa(1,2)), .cols { }', output: '.tabs (pa, pa(1, 2)),\n.cols {}' },
|
||||
{ input: '.tabs(pa, pa(1,2)), .cols { }', output: '.tabs(pa, pa(1, 2)),\n.cols {}' },
|
||||
{ input: '.tabs ( ) { }', output: '.tabs () {}' },
|
||||
{ input: '.tabs( ) { }', output: '.tabs() {}' },
|
||||
{ input: '.tabs (t, t2) \n{\n key: val(p1 ,p2); \n }', output: '.tabs (t, t2) {\n\tkey: val(p1, p2);\n}' },
|
||||
{ input: '.box-shadow(@shadow: 0 1px 3px rgba(0, 0, 0, .25)) {\n\t-webkit-box-shadow: @shadow;\n\t-moz-box-shadow: @shadow;\n\tbox-shadow: @shadow;\n}' }
|
||||
],
|
||||
}, {
|
||||
|
||||
}]
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user