fumadocs-core
Version:
The React.js library for building a documentation website
60 lines (58 loc) • 1.54 kB
JavaScript
import { n as __exportAll } from "./chunk-B-ezknvj.js";
//#region src/source/path.ts
var path_exports = /* @__PURE__ */ __exportAll({
basename: () => basename,
dirname: () => dirname,
extname: () => extname,
joinPath: () => joinPath,
slash: () => slash,
splitPath: () => splitPath
});
function basename(path, ext) {
const idx = path.lastIndexOf("/");
return path.substring(idx === -1 ? 0 : idx + 1, ext ? path.length - ext.length : path.length);
}
function extname(path) {
const dotIdx = path.lastIndexOf(".");
if (dotIdx !== -1) return path.substring(dotIdx);
return "";
}
function dirname(path) {
return path.split("/").slice(0, -1).join("/");
}
/**
* Split path into segments, trailing/leading slashes are removed
*/
function splitPath(path) {
return path.split("/").filter((p) => p.length > 0);
}
/**
* Resolve paths, slashes within the path will be ignored
* @param paths - Paths to join
* @example
* ```
* ['a','b'] // 'a/b'
* ['/a'] // 'a'
* ['a', '/b'] // 'a/b'
* ['a', '../b/c'] // 'b/c'
* ```
*/
function joinPath(...paths) {
const out = [];
const parsed = paths.flatMap(splitPath);
for (const seg of parsed) switch (seg) {
case "..":
out.pop();
break;
case ".": break;
default: out.push(seg);
}
return out.join("/");
}
function slash(path) {
if (path.startsWith("\\\\?\\")) return path;
return path.replaceAll("\\", "/");
}
//#endregion
export { path_exports as a, joinPath as i, dirname as n, slash as o, extname as r, splitPath as s, basename as t };
//# sourceMappingURL=path-DHIjrDBP.js.map