1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-12 08:54:00 +02:00
joplin/ReactNativeClient/lib/path-utils.js

63 lines
1.5 KiB
JavaScript
Raw Normal View History

2017-06-23 23:32:24 +02:00
function dirname(path) {
if (!path) throw new Error('Path is empty');
2017-11-11 00:18:00 +02:00
let s = path.split(/\/|\\/);
2017-06-23 23:32:24 +02:00
s.pop();
return s.join('/');
}
function basename(path) {
if (!path) throw new Error('Path is empty');
2017-11-11 00:18:00 +02:00
let s = path.split(/\/|\\/);
return s[s.length - 1];
}
2017-06-25 01:19:11 +02:00
function filename(path) {
if (!path) throw new Error('Path is empty');
2017-06-25 13:39:42 +02:00
let output = basename(path);
2017-06-25 01:19:11 +02:00
if (output.indexOf('.') < 0) return output;
output = output.split('.');
output.pop();
return output.join('.');
}
2017-07-10 20:17:03 +02:00
function fileExtension(path) {
if (!path) throw new Error('Path is empty');
let output = path.split('.');
if (output.length <= 1) return '';
return output[output.length - 1];
}
function isHidden(path) {
let b = basename(path);
if (!b.length) throw new Error('Path empty or not a valid path: ' + path);
return b[0] === '.';
}
function safeFileExtension(e) {
if (!e || !e.replace) return '';
return e.replace(/[^a-zA-Z0-9]/g, '')
}
function safeFilename(e, maxLength = 32) {
if (!e || !e.replace) return '';
let output = e.replace(/[^a-zA-Z0-9\-_\(\)\.]/g, '_')
return output.substr(0, maxLength);
}
2018-05-14 19:46:04 +02:00
function toSystemSlashes(path, os = null) {
if (os === null) os = process.platform;
if (os === 'win32') return path.replace(/\//g, "\\");
return path.replace(/\\/g, "/");
}
2018-01-25 21:01:14 +02:00
function rtrimSlashes(path) {
return path.replace(/[\/\\]+$/, '');
2018-01-25 21:01:14 +02:00
}
function ltrimSlashes(path) {
return path.replace(/^\/+/, '');
}
module.exports = { basename, dirname, filename, isHidden, fileExtension, safeFilename, safeFileExtension, toSystemSlashes, rtrimSlashes, ltrimSlashes };