summaryrefslogtreecommitdiffstats
path: root/lib/plugins/sortPlugins.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/plugins/sortPlugins.js')
-rw-r--r--lib/plugins/sortPlugins.js24
1 files changed, 20 insertions, 4 deletions
diff --git a/lib/plugins/sortPlugins.js b/lib/plugins/sortPlugins.js
index e96b02c..ca8a8a7 100644
--- a/lib/plugins/sortPlugins.js
+++ b/lib/plugins/sortPlugins.js
@@ -1,12 +1,20 @@
+var Immutable = require('immutable');
+
var THEME_PREFIX = require('../constants/themePrefix');
var LOADING_ORDER = ['plugin', 'theme'];
+var TYPE_PLUGIN = 'plugin';
+var TYPE_THEME = 'theme';
+
+
/**
* Returns the type of a plugin given its name
+ * @param {Plugin} plugin
* @return {String}
*/
-function pluginType(name) {
- return (name && name.indexOf(THEME_PREFIX) === 0) ? 'theme' : 'plugin';
+function pluginType(plugin) {
+ var name = plugin.getName();
+ return (name && name.indexOf(THEME_PREFIX) === 0) ? TYPE_THEME : TYPE_PLUGIN;
}
@@ -15,10 +23,18 @@ function pluginType(name) {
* The themes should always be loaded after the plugins
*
* @param {<OrderedMap<String:Plugin>>} plugins
- * @param {<List<String>>} requirementsKeys
* @return {OrderedMap<String:Plugin>}
*/
-function sortPlugins(plugins, requirementsKeys) {
+function sortPlugins(plugins) {
+ var byTypes = plugins.groupBy(pluginType);
+
+ return byTypes.get(TYPE_PLUGIN, Immutable.OrderedMap())
+ .merge(
+ byTypes.get(TYPE_THEME, Immutable.OrderedMap())
+ );
+
+
+
// Sort plugins to match list in book.json
return plugins.sort(function(a, b) {
// Get order from book.json