diff options
author | Samy Pesse <samypesse@gmail.com> | 2016-06-10 22:04:19 +0200 |
---|---|---|
committer | Samy Pesse <samypesse@gmail.com> | 2016-06-10 22:04:19 +0200 |
commit | 94a4310c1e4b9ee71def9cbd9efd8a4c491f4444 (patch) | |
tree | 5f221cb283e5f4591a3764112569ee62220e6da2 /lib/plugins/sortDependencies.js | |
parent | e8ee57be83adf3de2933373e7969c7675bf5372d (diff) | |
download | gitbook-94a4310c1e4b9ee71def9cbd9efd8a4c491f4444.zip gitbook-94a4310c1e4b9ee71def9cbd9efd8a4c491f4444.tar.gz gitbook-94a4310c1e4b9ee71def9cbd9efd8a4c491f4444.tar.bz2 |
Adapt Plugins.loadForBook to use correct order
Diffstat (limited to 'lib/plugins/sortDependencies.js')
-rw-r--r-- | lib/plugins/sortDependencies.js | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/plugins/sortDependencies.js b/lib/plugins/sortDependencies.js new file mode 100644 index 0000000..7f10095 --- /dev/null +++ b/lib/plugins/sortDependencies.js @@ -0,0 +1,34 @@ +var Immutable = require('immutable'); + +var THEME_PREFIX = require('../constants/themePrefix'); + +var TYPE_PLUGIN = 'plugin'; +var TYPE_THEME = 'theme'; + + +/** + * Returns the type of a plugin given its name + * @param {Plugin} plugin + * @return {String} + */ +function pluginType(plugin) { + var name = plugin.getName(); + return (name && name.indexOf(THEME_PREFIX) === 0) ? TYPE_THEME : TYPE_PLUGIN; +} + + +/** + * Sort the list of dependencies to match list in book.json + * The themes should always be loaded after the plugins + * + * @param {List<PluginDependency>} deps + * @return {List<PluginDependency>} + */ +function sortDependencies(plugins) { + var byTypes = plugins.groupBy(pluginType); + + return byTypes.get(TYPE_PLUGIN, Immutable.List()) + .concat(byTypes.get(TYPE_THEME, Immutable.List())); +} + +module.exports = sortDependencies;
\ No newline at end of file |