summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/output/website/onInit.js2
-rw-r--r--lib/output/website/prepareResources.js54
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