mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-23 02:53:29 +00:00
Add plugins.resources for template context
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
module.exports = [
|
||||
var Immutable = require('immutable');
|
||||
|
||||
module.exports = Immutable.List([
|
||||
'js',
|
||||
'css'
|
||||
];
|
||||
]);
|
||||
|
||||
@@ -42,7 +42,8 @@ function generateBook(generator, book, options) {
|
||||
new Output({
|
||||
book: book,
|
||||
options: options,
|
||||
state: state
|
||||
state: state,
|
||||
generator: generator.name
|
||||
})
|
||||
)
|
||||
.then(preparePlugins)
|
||||
|
||||
@@ -2,6 +2,7 @@ var path = require('path');
|
||||
var omit = require('omit-keys');
|
||||
|
||||
var Templating = require('../../templating');
|
||||
var Plugins = require('../../plugins');
|
||||
var JSONUtils = require('../../json');
|
||||
var LocationUtils = require('../../utils/location');
|
||||
var Modifiers = require('../modifiers');
|
||||
@@ -22,6 +23,7 @@ function onPage(output, page) {
|
||||
var prefix = options.get('prefix');
|
||||
var book = output.getBook();
|
||||
var config = book.getConfig();
|
||||
var plugins = output.getPlugins();
|
||||
|
||||
var engine = createTemplateEngine(output, page.getPath());
|
||||
|
||||
@@ -36,7 +38,11 @@ function onPage(output, page) {
|
||||
.then(function(resultPage) {
|
||||
// Generate the context
|
||||
var context = JSONUtils.encodeBookWithPage(output.getBook(), resultPage);
|
||||
|
||||
context.config = config.getValues().toJS();
|
||||
context.plugins = {
|
||||
resources: Plugins.listResources(plugins, prefix).toJS()
|
||||
};
|
||||
|
||||
context.template = {
|
||||
getJSContext: function() {
|
||||
@@ -47,7 +53,7 @@ function onPage(output, page) {
|
||||
gitbook: context.gitbook,
|
||||
basePath: basePath,
|
||||
book: {
|
||||
language: null //context.book.language
|
||||
language: null // context.book.language
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
module.exports = {
|
||||
loadForBook: require('./loadForBook'),
|
||||
validateConfig: require('./validateConfig'),
|
||||
installPlugins: require('./installPlugins')
|
||||
installPlugins: require('./installPlugins'),
|
||||
listResources: require('./listResources')
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
var Immutable = require('immutable');
|
||||
var path = require('path');
|
||||
|
||||
var LocationUtils = require('../utils/location');
|
||||
var PLUGIN_RESOURCES = require('../constants/pluginResources');
|
||||
|
||||
/**
|
||||
Encode plugins as JSON
|
||||
|
||||
@param {OrderedMap<String:Plugin>}
|
||||
@param {String} type
|
||||
@return {Map<String:List<{url, path}>}
|
||||
*/
|
||||
function listResources(plugins, type) {
|
||||
return plugins.reduce(function(result, plugin) {
|
||||
var npmId = plugin.getNpmID();
|
||||
var resources = plugin.getResources(type);
|
||||
|
||||
PLUGIN_RESOURCES.forEach(function(resourceType) {
|
||||
var assets = resources.get(resourceType);
|
||||
if (!assets) return;
|
||||
|
||||
var list = result.get(resourceType) || Immutable.List();
|
||||
|
||||
assets = assets.map(function(assetFile) {
|
||||
if (LocationUtils.isExternal(assetFile)) {
|
||||
return {
|
||||
url: assetFile
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
path: LocationUtils.normalize(path.join(npmId, assetFile))
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
list = list.concat(assets);
|
||||
result = result.set(resourceType, list);
|
||||
});
|
||||
|
||||
return result;
|
||||
}, Immutable.Map());
|
||||
}
|
||||
|
||||
module.exports = listResources;
|
||||
Reference in New Issue
Block a user