Skip to content

Commit

Permalink
Alpha sort in CSS property formatter
Browse files Browse the repository at this point in the history
  • Loading branch information
kpdecker committed Mar 21, 2011
1 parent 0b6e2ec commit a4213ca
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 22 deletions.
6 changes: 6 additions & 0 deletions content/fireformat/formatters/fireformatCssFormatter.js
Expand Up @@ -103,6 +103,12 @@ FBL.ns(function() {
props.push({ name: m[1], value: m[2], important: m[3] });
}
}

if (this.prefCache.getPref("property.alphaSortProperties")) {
props = props.sort(function(a, b) {
return a.name.localeCompare(b.name);
})
}
var propLen = props.length;
for (var i = 0; i < propLen; i++) {
var prop = props[i];
Expand Down
1 change: 1 addition & 0 deletions defaults/preferences/cssFormatter.js
Expand Up @@ -38,6 +38,7 @@ pref("extensions.firebug.fireformatCssFormatter.property.spaceBeforeValue", 1);
pref("extensions.firebug.fireformatCssFormatter.property.spaceBeforePriority", 1);
pref("extensions.firebug.fireformatCssFormatter.property.spaceBeforeSemicolon", 0);
pref("extensions.firebug.fireformatCssFormatter.property.valueSpaceCount", 1);
pref("extensions.firebug.fireformatCssFormatter.property.alphaSortProperties", false);

/*
* Simple @rule text formatting
Expand Down
47 changes: 25 additions & 22 deletions test/formatter/cssFormatter/blockTextTest.js
Expand Up @@ -6,7 +6,8 @@ function runTest() {
"fireformatCssFormatter.block.separatorAfterOpen",
"fireformatCssFormatter.block.separatorBeforeClose",
"fireformatCssFormatter.block.separatorAfterClose",
"fireformatCssFormatter.block.componentSeparator"
"fireformatCssFormatter.block.componentSeparator",
"fireformatCssFormatter.property.alphaSortProperties"
]);

var formatter = Format.Formatters.getFormatter("com.incaseofstairs.fireformatCSSFormatter");
Expand All @@ -21,7 +22,7 @@ function runTest() {
return formatter.format({
type: CSSRule.STYLE_RULE,
selectorText: "selector",
style: { cssText: "property: value; property2: value2;" }
style: { cssText: "property2: value2; property: value;" }
});
}
function getMultipleBlocks() {
Expand Down Expand Up @@ -62,55 +63,57 @@ function runTest() {
prefs.setGlobal("fireformatCssFormatter.property.tokensPerLine", 0);

// Single block, single property
prefs.setPrefs(1, " ", "\n", "\n", "\n", "\n");
prefs.setPrefs(1, " ", "\n", "\n", "\n", "\n", true);
FBTest.compare("selector {\n property: value;\n}", getSingleProperty(), "Single prop, Indent, newlines");
prefs.setPrefs(0, " ", "\n", "\n", "\n", "\n");
prefs.setPrefs(0, " ", "\n", "\n", "\n", "\n", true);
FBTest.compare("selector {\nproperty: value;\n}", getSingleProperty(), "Single prop, No indent, newlines");
prefs.setPrefs(2, " ", "\n", "\n", "\n", "\n");
prefs.setPrefs(2, " ", "\n", "\n", "\n", "\n", true);
FBTest.compare("selector {\n property: value;\n}", getSingleProperty(), "Single prop, Double indent, newlines");

prefs.setPrefs(1, "\n", "\n", "\n", "\n", "\n");
prefs.setPrefs(1, "\n", "\n", "\n", "\n", "\n", true);
FBTest.compare("selector\n{\n property: value;\n}", getSingleProperty(), "Single prop, All newlines");
prefs.setPrefs(1, " ", " ", " ", "", " ");
prefs.setPrefs(1, " ", " ", " ", "", " ", true);
FBTest.compare("selector { property: value; }", getSingleProperty(), "Single prop, No newlines");

// Single block, multiple property
prefs.setPrefs(1, " ", "\n", "\n", "\n", "\n");
prefs.setPrefs(1, " ", "\n", "\n", "\n", "\n", true);
FBTest.compare("selector {\n property: value;\n property2: value2;\n}", getMultipleProperty(), "Multiple prop, Indent, newlines");
prefs.setPrefs(0, " ", "\n", "\n", "\n", "\n");
prefs.setPrefs(0, " ", "\n", "\n", "\n", "\n", true);
FBTest.compare("selector {\nproperty: value;\nproperty2: value2;\n}", getMultipleProperty(), "Multiple prop, No indent, newlines");
prefs.setPrefs(2, " ", "\n", "\n", "\n", "\n");
prefs.setPrefs(2, " ", "\n", "\n", "\n", "\n", true);
FBTest.compare("selector {\n property: value;\n property2: value2;\n}", getMultipleProperty(), "Multiple prop, Double indent, newlines");

prefs.setPrefs(1, "\n", "\n", "\n", "\n", "\n");
prefs.setPrefs(1, "\n", "\n", "\n", "\n", "\n", true);
FBTest.compare("selector\n{\n property: value;\n property2: value2;\n}", getMultipleProperty(), "Multiple prop, All newlines");
prefs.setPrefs(1, " ", " ", " ", "", " ");
prefs.setPrefs(1, " ", " ", " ", "", " ", true);
FBTest.compare("selector { property: value; property2: value2; }", getMultipleProperty(), "Multiple prop, No newlines");
prefs.setPrefs(1, " ", " ", " ", "", " ", false);
FBTest.compare("selector { property2: value2; property: value; }", getMultipleProperty(), "Multiple prop, No newlines, No Sort");

// Multiple blocks
prefs.setPrefs(1, " ", "\n", "\n", "\n", "\n");
prefs.setPrefs(1, " ", "\n", "\n", "\n", "\n", true);
FBTest.compare("selector {\n\n}\n\nselector2 {\n property: value;\n}\n", getMultipleBlocks(), "Multiple block, Same line brace");
prefs.setPrefs(0, " ", "\n", "\n", "\n", "\n");
prefs.setPrefs(0, " ", "\n", "\n", "\n", "\n", true);
FBTest.compare("selector {\n\n}\n\nselector2 {\nproperty: value;\n}\n", getMultipleBlocks(), "Multiple block, No indent, newlines");
prefs.setPrefs(2, " ", "\n", "\n", "\n", "\n");
prefs.setPrefs(2, " ", "\n", "\n", "\n", "\n", true);
FBTest.compare("selector {\n\n}\n\nselector2 {\n property: value;\n}\n", getMultipleBlocks(), "Multiple block, Double indent, newlines");

prefs.setPrefs(1, "\n", "\n", "\n", "\n", "\n");
prefs.setPrefs(1, "\n", "\n", "\n", "\n", "\n", true);
FBTest.compare("selector\n{\n\n}\n\nselector2\n{\n property: value;\n}\n", getMultipleBlocks(), "Multiple prop, All newlines");
prefs.setPrefs(1, " ", " ", " ", "", " ");
prefs.setPrefs(1, " ", " ", " ", "", " ", true);
FBTest.compare("selector { } selector2 { property: value; }", getMultipleBlocks(), "Multiple block, No newlines");

// Nested block
prefs.setPrefs(1, " ", "\n", "\n", "\n", "\n");
prefs.setPrefs(1, " ", "\n", "\n", "\n", "\n", true);
FBTest.compare("@media media {\n selector {\n property: value;\n }\n \n selector2 {\n \n }\n}", getNestedBlock(), "Nested block, Indent, newlines");
prefs.setPrefs(0, " ", "\n", "\n", "\n", "\n");
prefs.setPrefs(0, " ", "\n", "\n", "\n", "\n", true);
FBTest.compare("@media media {\nselector {\nproperty: value;\n}\n\nselector2 {\n\n}\n}", getNestedBlock(), "Nested block, No indent, newlines");
prefs.setPrefs(2, " ", "\n", "\n", "\n", "\n");
prefs.setPrefs(2, " ", "\n", "\n", "\n", "\n", true);
FBTest.compare("@media media {\n selector {\n property: value;\n }\n \n selector2 {\n \n }\n}", getNestedBlock(), "Nested block, Double indent, newlines");

prefs.setPrefs(1, "\n", "\n", "\n", "\n", "\n");
prefs.setPrefs(1, "\n", "\n", "\n", "\n", "\n", true);
FBTest.compare("@media media\n{\n selector\n {\n property: value;\n }\n \n selector2\n {\n \n }\n}", getNestedBlock(), "Nested block, All newlines");
prefs.setPrefs(1, " ", " ", " ", "", " ");
prefs.setPrefs(1, " ", " ", " ", "", " ", true);
FBTest.compare("@media media { selector { property: value; } selector2 { } }", getNestedBlock(), "Nested block, No newlines");

prefs.reset();
Expand Down

0 comments on commit a4213ca

Please sign in to comment.