import isestr from './isestr.mjs'
import strright from './strright.mjs'
import strdelright from './strdelright.mjs'
/**
* 清理檔案或資料夾位置
*
* Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/getClearPathName.test.mjs Github}
* @memberOf wsemi
* @param {string} str 輸入檔案或資料夾位置字串
* @returns {string} 清理後檔案或資料夾位置
* @example
*
* let c
*
* c = 'C:\\temp\\myfile.html'
* console.log(getClearPathName(c))
* // => { path: 'C:\\temp\\myfile.html', isRoot: false }
*
* c = 'C:\\temp\\myfile.txt.html'
* console.log(getClearPathName(c))
* // => { path: 'C:\\temp\\myfile.txt.html', isRoot: false }
*
* c = 'C:\\temp\\\\temp\\\\myfile.txt.html'
* console.log(getClearPathName(c))
* // => { path: 'C:\\temp\\temp\\myfile.txt.html', isRoot: false }
*
* c = 'C:\\temp\\'
* console.log(getClearPathName(c))
* // => { path: 'C:\\temp', isRoot: false }
*
* c = 'C:\\temp'
* console.log(getClearPathName(c))
* // => { path: 'C:\\temp', isRoot: false }
*
* c = 'C:\\'
* console.log(getClearPathName(c))
* // => { path: 'C:\\', isRoot: true }
*
* c = 'C:'
* console.log(getClearPathName(c))
* // => { path: 'C:\\', isRoot: true }
*
* c = '/tmp/myfile.html'
* console.log(getClearPathName(c))
* // => { path: '/tmp/myfile.html', isRoot: false }
*
* c = '/tmp/myfile.txt.html'
* console.log(getClearPathName(c))
* // => { path: '/tmp/myfile.txt.html', isRoot: false }
*
* c = '//tmp////tmp//myfile.txt.html'
* console.log(getClearPathName(c))
* // => { path: '/tmp/tmp/myfile.txt.html', isRoot: false }
*
* c = '/tmp/'
* console.log(getClearPathName(c))
* // => { path: '/tmp', isRoot: false }
*
* c = '/tmp'
* console.log(getClearPathName(c))
* // => { path: '/tmp', isRoot: false }
*
* c = '/'
* console.log(getClearPathName(c))
* // => { path: '/', isRoot: true }
*
* c = '/foo/bar/baz/asdf/quux.html'
* console.log(getClearPathName(c))
* // => { path: '/foo/bar/baz/asdf/quux.html', isRoot: false }
*
* c = '/foo/bar/baz/asdf/quux.txt.html'
* console.log(getClearPathName(c))
* // => { path: '/foo/bar/baz/asdf/quux.txt.html', isRoot: false }
*
* c = ''
* console.log(getClearPathName(c))
* // => { path: '', isRoot: false }
*
*/
function getClearPathName(str) {
//check
if (!isestr(str)) {
return {
path: '',
isRoot: false,
}
}
//replace
while (str.indexOf('\\\\') >= 0) {
str = str.replace('\\\\', '\\')
}
while (str.indexOf('//') >= 0) {
str = str.replace('//', '/')
}
if (strright(str, 1) === ':') { //若為windows根目錄
return {
path: `${str}\\`,
isRoot: true,
}
}
if (strright(str, 1) === '\\') {
let r = strdelright(str, 1)
if (strright(r, 1) === ':') { //若為windows根目錄
return {
path: str,
isRoot: true,
}
}
return {
path: r,
isRoot: false,
}
}
else if (strright(str, 1) === '/') {
let r = strdelright(str, 1)
//if (size(r) === 0) { //若為根目錄
if (r.length === 0) { //若為根目錄
return {
path: str,
isRoot: true,
}
}
return {
path: r,
isRoot: false,
}
}
return {
path: str,
isRoot: false,
}
}
export default getClearPathName