softkave-js-utils
Version:
JavaScript & Typescript utility functions, types, and classes
42 lines • 1.59 kB
JavaScript
import { compact, isArray, last } from 'lodash-es';
import path from 'path-browserify';
import { convertToArray } from '../array/index.js';
const kDefaultFolderSeparator = '/';
export function pathJoin(params) {
const { input, separator = kDefaultFolderSeparator } = params;
let pJoined = path.posix.join(...convertToArray(input).map(arg => isArray(arg) ? arg.join(separator) : arg));
if (pJoined.match(/^[./]*$/) || !pJoined) {
return '';
}
if (pJoined[0] !== separator) {
pJoined = separator + pJoined;
}
if (pJoined[pJoined.length - 1] === separator) {
pJoined = pJoined.slice(0, -1);
}
return pJoined;
}
export function pathSplit(params) {
const { input = '', separator = kDefaultFolderSeparator } = params;
return compact(pathJoin({ separator, input: input }).split(separator));
}
export function isPathEmpty(params) {
const { input, separator = kDefaultFolderSeparator } = params;
const pJoined = pathJoin({ separator, input: [input, 'E'] });
return pJoined === '/E';
}
export function pathExtension(params) {
const name = last(pathSplit(params));
return path.extname(name || '').replace('.', '');
}
export function pathBasename(params) {
const { separator = kDefaultFolderSeparator } = params;
const name = last(pathSplit(params)) || '';
const ext = pathExtension({ separator, input: name });
let basename = path.posix.basename(name, `.${ext}`);
if (basename.match(/^[.]*$/)) {
basename = '';
}
return { basename, ext };
}
//# sourceMappingURL=path.js.map