UNPKG

gulp-wrapper

Version:

A gulp plugin for wrapping files with custom strings. Access to filename is given through interpolation.

90 lines (65 loc) 2.49 kB
// gulp-wrapper // // A plugin used to wrap files with custom strings var through2 = require('through2'), gutil = require('gulp-util'); var PluginError = gutil.PluginError; module.exports = function(opt) { 'use strict'; if(typeof opt !== 'object'){ opt = {}; } return through2.obj(function (file, enc, callback) { // check if file is there if (file.isNull()) { this.push(file); return callback(); } if (file.isStream()){ return this.emit('error', new PluginError('gulp-wrapper', 'Streaming not supported')); } // get the file's name var fileName = file.path.replace(file.base, ''), // replace front slash from windowsLand // set the new contents newContentString = file.contents.toString(), header, footer; // normalize windows platform slashes if(process.platform.match(/^win/)){ fileName = fileName.replace(/\\/g, '/'); } // set now the header and footer values according to the // options passed... // ------------------------------- if header given is a function... if(typeof opt.header === 'function'){ // execute the function with `file` as an argument header = opt.header(file); // ------------------------------- if header given is a string... } else if(typeof opt.header === 'string'){ // inject the file name if needed header = opt.header.replace(/\${filename}/g, fileName); // ------------------------------- if header given is anything else... } else if(typeof opt.header !== 'string'){ header = ''; } // ------------------------------- if footer given is a function... if(typeof opt.footer === 'function'){ // execute the function with `file` as an argument footer = opt.footer(file); // ------------------------------- if footer given is a string... } else if(typeof opt.footer === 'string'){ // inject the file name if needed footer = opt.footer.replace(/\${filename}/g, fileName); // ------------------------------- if footer given is anything else... } else if(typeof opt.footer !== 'string'){ footer = ''; } // wrap the contents newContentString = header + newContentString + footer; // change the file contents file.contents = new Buffer(newContentString); // push the file into the output this.push(file); callback(); }); };