UNPKG

mason

Version:

simple, fun, static-file builder for jade, stylus, and javascript

47 lines (42 loc) 1.4 kB
var path = require('path'); module.exports = function createRenderer(assets, config) { return new Renderer(assets, config); }; function Renderer(assets, config) { this.assets = assets || {}; this.config = config || {}; } // Render a mason target inside jade Renderer.prototype.render = function(assetName) { var asset = this.assets[assetName]; if (asset) { var mode = (this.config.modes && this.config.modes[assetName]) || asset.renderer || Renderer.defaultModes[asset.type]; var writer = Renderer.writers[mode]; this.config.prefix = this.config.prefix || ''; return writer(asset, this.config); } asset = { toSrc: assetName }; return Renderer.writers.passthru(asset, this.config); }; Renderer.writers = { passthru: function(asset, config) { return config.prefix + asset.toSrc; }, debug: function(asset, config) { var sources = (asset.fromSrc instanceof Array) ? asset.fromSrc : [asset.fromSrc]; return sources.map(function(src) { return '<script src="' + config.prefix + src + '"></script>'; }).join(''); }, uglify: function(asset, config) { return '<script src="' + config.prefix + asset.toSrc + '"></script>'; }, stylus: function(asset, config) { return '<link rel="stylesheet" href="' + config.prefix + asset.toSrc + '" />'; } }; Renderer.defaultModes = { javascript: 'uglify', stylus: 'stylus', jade: 'jade' };