diff options
-rw-r--r-- | lib/output/website/onInit.js | 2 | ||||
-rw-r--r-- | lib/output/website/prepareResources.js | 54 |
2 files changed, 56 insertions, 0 deletions
diff --git a/lib/output/website/onInit.js b/lib/output/website/onInit.js index 979a90d..3465eef 100644 --- a/lib/output/website/onInit.js +++ b/lib/output/website/onInit.js @@ -2,6 +2,7 @@ var Promise = require('../../utils/promise'); var copyPluginAssets = require('./copyPluginAssets'); var prepareI18n = require('./prepareI18n'); +var prepareResources = require('./prepareResources'); /** Initialize the generator @@ -12,6 +13,7 @@ var prepareI18n = require('./prepareI18n'); function onInit(output) { return Promise(output) .then(prepareI18n) + .then(prepareResources) .then(copyPluginAssets); } diff --git a/lib/output/website/prepareResources.js b/lib/output/website/prepareResources.js new file mode 100644 index 0000000..4e6835d --- /dev/null +++ b/lib/output/website/prepareResources.js @@ -0,0 +1,54 @@ +var is = require('is'); +var Immutable = require('immutable'); +var Promise = require('../../utils/promise'); + +var Api = require('../../api'); + +/** + Prepare plugins resources, add all output corresponding type resources + + @param {Output} + @return {Promise<Output>} +*/ +function prepareResources(output) { + var plugins = output.getPlugins(); + var options = output.getOptions(); + var type = options.get('prefix'); + var state = output.getState(); + var context = Api.encodeGlobal(output); + + var result = Immutable.Map(); + + return Promise.forEach(plugins, function(plugin) { + var pluginResources = plugin.getResources(type); + + return Promise() + .then(function() { + // Apply resources if is a function + if (is.fn(pluginResources)) { + return Promise() + .then(pluginResources.bind(context)); + } + else { + return pluginResources; + } + }) + .then(function(resources) { + result = result.set(plugin.getName(), Immutable.Map(resources)); + }); + }) + .then(function() { + // Set output resources + state = state.merge({ + resources: result + }); + + output = output.merge({ + state: state + }); + + return output; + }); +} + +module.exports = prepareResources;
\ No newline at end of file |