UNPKG

softkave-js-utils

Version:

JavaScript & Typescript utility functions, types, and classes

42 lines 1.59 kB
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