| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | 'use strict';var Stream = require('stream');var Path = require('path');function gulpRename(obj, options) {  options = options || {};  var stream = new Stream.Transform({ objectMode: true });  function parsePath(path) {    var extname = options.multiExt      ? Path.basename(path).slice(Path.basename(path).indexOf('.'))      : Path.extname(path);    return {      dirname: Path.dirname(path),      basename: Path.basename(path, extname),      extname: extname    };  }  stream._transform = function(originalFile, unused, callback) {    var file = originalFile.clone({ contents: false });    var parsedPath = parsePath(file.relative);    var path;    var type = typeof obj;    if (type === 'string' && obj !== '') {      path = obj;    } else if (type === 'function') {      let newParsedPath = obj(parsedPath, file);      if (typeof newParsedPath === 'object' && newParsedPath !== null) {        parsedPath = newParsedPath;      }      path = Path.join(        parsedPath.dirname,        parsedPath.basename + parsedPath.extname      );    } else if (type === 'object' && obj !== undefined && obj !== null) {      var dirname = 'dirname' in obj ? obj.dirname : parsedPath.dirname,        prefix = obj.prefix || '',        suffix = obj.suffix || '',        basename = 'basename' in obj ? obj.basename : parsedPath.basename,        extname = 'extname' in obj ? obj.extname : parsedPath.extname;      path = Path.join(dirname, prefix + basename + suffix + extname);    } else {      callback(        new Error('Unsupported renaming parameter type supplied'),        undefined      );      return;    }    file.path = Path.join(file.base, path);    // Rename sourcemap if present    if (file.sourceMap) {      file.sourceMap.file = file.relative;    }    callback(null, file);  };  return stream;}module.exports = gulpRename;
 |