1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- var map = require("map-stream"),
- Path = require("path");
- module.exports = function (obj) {
- "use strict";
- function parsePath(path) {
- var extname = Path.extname(path);
- return {
- dirname: Path.dirname(path),
- basename: Path.basename(path, extname),
- extname: extname
- };
- }
- function rename(file, callback) {
- var parsedPath = parsePath(file.relative);
- var path;
- var type = typeof obj;
- if (type === "string" && obj !== "") {
- path = obj;
- } else if (type === "function") {
- var result = obj(parsedPath) || parsedPath;
- path = Path.join(result.dirname, result.basename + result.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);
- callback(null, file);
- }
- return map(rename);
- };
|