You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
171 lines
4.6 KiB
171 lines
4.6 KiB
/** |
|
* upath http://github.com/anodynos/upath/ |
|
* |
|
* A proxy to `path`, replacing `\` with `/` for all results & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions. |
|
* Version 1.2.0 - Compiled on 2019-09-02 23:33:57 |
|
* Repository git://github.com/anodynos/upath |
|
* Copyright(c) 2019 Angelos Pikoulas <agelos.pikoulas@gmail.com> |
|
* License MIT |
|
*/ |
|
|
|
// Generated by uRequire v0.7.0-beta.33 target: 'lib' template: 'nodejs' |
|
|
|
|
|
var VERSION = '1.2.0'; // injected by urequire-rc-inject-version |
|
|
|
var extraFn, extraFunctions, isFunction, isString, isValidExt, name, path, propName, propValue, toUnix, upath, slice = [].slice, indexOf = [].indexOf || function (item) { |
|
for (var i = 0, l = this.length; i < l; i++) { |
|
if (i in this && this[i] === item) |
|
return i; |
|
} |
|
return -1; |
|
}, hasProp = {}.hasOwnProperty; |
|
path = require("path"); |
|
isFunction = function (val) { |
|
return val instanceof Function; |
|
}; |
|
isString = function (val) { |
|
return typeof val === "string" || !!val && typeof val === "object" && Object.prototype.toString.call(val) === "[object String]"; |
|
}; |
|
upath = exports; |
|
upath.VERSION = typeof VERSION !== "undefined" && VERSION !== null ? VERSION : "NO-VERSION"; |
|
toUnix = function (p) { |
|
var double; |
|
p = p.replace(/\\/g, "/"); |
|
double = /\/\//; |
|
while (p.match(double)) { |
|
p = p.replace(double, "/"); |
|
} |
|
return p; |
|
}; |
|
for (propName in path) { |
|
propValue = path[propName]; |
|
if (isFunction(propValue)) { |
|
upath[propName] = function (propName) { |
|
return function () { |
|
var args, result; |
|
args = 1 <= arguments.length ? slice.call(arguments, 0) : []; |
|
args = args.map(function (p) { |
|
if (isString(p)) { |
|
return toUnix(p); |
|
} else { |
|
return p; |
|
} |
|
}); |
|
result = path[propName].apply(path, args); |
|
if (isString(result)) { |
|
return toUnix(result); |
|
} else { |
|
return result; |
|
} |
|
}; |
|
}(propName); |
|
} else { |
|
upath[propName] = propValue; |
|
} |
|
} |
|
upath.sep = "/"; |
|
extraFunctions = { |
|
toUnix: toUnix, |
|
normalizeSafe: function (p) { |
|
p = toUnix(p); |
|
if (p.startsWith("./")) { |
|
if (p.startsWith("./..") || p === "./") { |
|
return upath.normalize(p); |
|
} else { |
|
return "./" + upath.normalize(p); |
|
} |
|
} else { |
|
return upath.normalize(p); |
|
} |
|
}, |
|
normalizeTrim: function (p) { |
|
p = upath.normalizeSafe(p); |
|
if (p.endsWith("/")) { |
|
return p.slice(0, +(p.length - 2) + 1 || 9000000000); |
|
} else { |
|
return p; |
|
} |
|
}, |
|
joinSafe: function () { |
|
var p, result; |
|
p = 1 <= arguments.length ? slice.call(arguments, 0) : []; |
|
result = upath.join.apply(null, p); |
|
if (p[0].startsWith("./") && !result.startsWith("./")) { |
|
result = "./" + result; |
|
} |
|
return result; |
|
}, |
|
addExt: function (file, ext) { |
|
if (!ext) { |
|
return file; |
|
} else { |
|
if (ext[0] !== ".") { |
|
ext = "." + ext; |
|
} |
|
return file + (file.endsWith(ext) ? "" : ext); |
|
} |
|
}, |
|
trimExt: function (filename, ignoreExts, maxSize) { |
|
var oldExt; |
|
if (maxSize == null) { |
|
maxSize = 7; |
|
} |
|
oldExt = upath.extname(filename); |
|
if (isValidExt(oldExt, ignoreExts, maxSize)) { |
|
return filename.slice(0, +(filename.length - oldExt.length - 1) + 1 || 9000000000); |
|
} else { |
|
return filename; |
|
} |
|
}, |
|
removeExt: function (filename, ext) { |
|
if (!ext) { |
|
return filename; |
|
} else { |
|
ext = ext[0] === "." ? ext : "." + ext; |
|
if (upath.extname(filename) === ext) { |
|
return upath.trimExt(filename); |
|
} else { |
|
return filename; |
|
} |
|
} |
|
}, |
|
changeExt: function (filename, ext, ignoreExts, maxSize) { |
|
if (maxSize == null) { |
|
maxSize = 7; |
|
} |
|
return upath.trimExt(filename, ignoreExts, maxSize) + (!ext ? "" : ext[0] === "." ? ext : "." + ext); |
|
}, |
|
defaultExt: function (filename, ext, ignoreExts, maxSize) { |
|
var oldExt; |
|
if (maxSize == null) { |
|
maxSize = 7; |
|
} |
|
oldExt = upath.extname(filename); |
|
if (isValidExt(oldExt, ignoreExts, maxSize)) { |
|
return filename; |
|
} else { |
|
return upath.addExt(filename, ext); |
|
} |
|
} |
|
}; |
|
isValidExt = function (ext, ignoreExts, maxSize) { |
|
if (ignoreExts == null) { |
|
ignoreExts = []; |
|
} |
|
return ext && ext.length <= maxSize && indexOf.call(ignoreExts.map(function (e) { |
|
return (e && e[0] !== "." ? "." : "") + e; |
|
}), ext) < 0; |
|
}; |
|
for (name in extraFunctions) { |
|
if (!hasProp.call(extraFunctions, name)) |
|
continue; |
|
extraFn = extraFunctions[name]; |
|
if (upath[name] !== void 0) { |
|
throw new Error("path." + name + " already exists."); |
|
} else { |
|
upath[name] = extraFn; |
|
} |
|
} |
|
|
|
; |