Merge pull request #904 from zeitgeist87/order-components Add after-property to allow ordering of plugins
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
diff --git a/components.js b/components.js
index d833543..f87b04f 100644
--- a/components.js
+++ b/components.js
@@ -606,6 +606,7 @@ var components = {
"keep-markup": {
"title": "Keep Markup",
"owner": "Golmote",
+ "after": "normalize-whitespace",
"noCSS": true
},
"command-line": {
@@ -616,6 +617,7 @@ var components = {
"normalize-whitespace": {
"title": "Normalize Whitespace",
"owner": "zeitgeist87",
+ "after": "unescaped-markup",
"noCSS": true
}
}
diff --git a/download.js b/download.js
index a8c9e97..4e828e4 100644
--- a/download.js
+++ b/download.js
@@ -117,6 +117,7 @@ for (var category in components) {
noJS: all[id].noJS || all.meta.noJS,
enabled: checked,
require: $u.type(all[id].require) === 'string' ? [all[id].require] : all[id].require,
+ after: $u.type(all[id].after) === 'string' ? [all[id].after] : all[id].after,
owner: all[id].owner,
files: {
minified: {
@@ -374,18 +375,21 @@ function delayedGenerateCode(){
timerId = setTimeout(generateCode, 500);
}
-function getSortedComponentsByRequirements(components){
- var sorted = [];
- for (var component in components) {
- sorted.push(component);
+function getSortedComponents(components, requireName, sorted) {
+ if (!sorted) {
+ sorted = [];
+ for (var component in components) {
+ sorted.push(component);
+ }
}
+
var i = 0;
while (i < sorted.length) {
var id = sorted[i];
var indexOfRequirement = i;
var notNow = false;
- for (var requirement in components[id].require) {
- indexOfRequirement = sorted.indexOf(components[id].require[requirement]);
+ for (var requirement in components[id][requireName]) {
+ indexOfRequirement = sorted.indexOf(components[id][requireName][requirement]);
if (indexOfRequirement > i) {
notNow = true;
break;
@@ -403,6 +407,11 @@ function getSortedComponentsByRequirements(components){
return sorted;
}
+function getSortedComponentsByRequirements(components){
+ var sorted = getSortedComponents(components, "after");
+ return getSortedComponents(components, "require", sorted);
+}
+
function generateCode(){
var promises = [];
var redownload = {};