1 | var path = require('path');
|
2 |
|
3 | var renderFns = {
|
4 | debug: function(dest, source) {
|
5 | return source.src.map(function(src) {
|
6 | return '<script src="' + src + '"></script>';
|
7 | }).join('');
|
8 | },
|
9 | uglify: function(dest, source) {
|
10 | return '<script src="' + dest.src + '"></script>';
|
11 | },
|
12 | stylus: function(dest, source) {
|
13 | return '<link rel="stylesheet" href="' + dest.src + '" />';
|
14 | }
|
15 | };
|
16 |
|
17 | module.exports = function locals(root, renderers, customRenderFns) {
|
18 | customRenderFns = customRenderFns || {};
|
19 | var file = path.join(root, 'mason.json');
|
20 | var assets = require(file);
|
21 |
|
22 | var defaultRenderer = {
|
23 | javascript: renderers.javascript || 'uglify',
|
24 | stylus: renderers.stylus || 'stylus',
|
25 | jade: renderers.jade || 'jade'
|
26 | };
|
27 |
|
28 | return {
|
29 | mason: function(assetName) {
|
30 | var asset = assets[assetName];
|
31 | if (asset) {
|
32 | var renderer = renderers[assetName] || asset.renderer || defaultRenderer[asset.type];
|
33 | var renderFn = customRenderFns[renderer] || renderFns[renderer];
|
34 | return renderFn(asset.dest, asset.source);
|
35 | }
|
36 | throw new Error("Unable to find mason asset '" + assetName + "'");
|
37 | }
|
38 | };
|
39 | }; |
\ | No newline at end of file |