UNPKG

1.16 kBJavaScriptView Raw
1var path = require('path');
2
3var 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
17module.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