@mieweb/wikigdrive
Version:
Google Drive to MarkDown synchronization
63 lines (62 loc) • 2.22 kB
JavaScript
import RelateUrl from 'relateurl';
export function convertExtension(localPath, mode) {
const lastSlash = localPath.lastIndexOf('/');
const dirName = localPath.substring(0, lastSlash + 1);
const fileName = localPath.substring(lastSlash + 1);
const parts = fileName.split('.');
if (parts.length > 1) {
const ext = parts[parts.length - 1];
switch (ext) {
case 'md':
switch (mode) {
case 'uglyURLs':
parts[parts.length - 1] = 'html';
break;
case 'dirURLs':
parts.pop();
break;
case 'mdURLs':
default:
parts[parts.length - 1] = 'md';
break;
}
break;
}
}
return dirName + parts.join('.');
}
export function convertToRelativeMarkDownPath(localPath, basePath) {
if (localPath.startsWith('https://'))
return localPath;
if (localPath.startsWith('http://'))
return localPath;
if (basePath === localPath)
return '.';
const host = '//example.com/';
return convertExtension(decodeURIComponent(RelateUrl.relate(host + basePath, host + localPath, {
output: RelateUrl.PATH_RELATIVE
})));
}
export function convertToRelativeSvgPath(localPath, basePath) {
if (localPath.startsWith('https://'))
return localPath;
if (localPath.startsWith('http://'))
return localPath;
if (basePath === localPath)
return '.';
const host = '//example.com/';
return convertExtension(decodeURIComponent(RelateUrl.relate(host + basePath, host + localPath, {
output: RelateUrl.PATH_RELATIVE
})), 'dirURLs');
}
export function convertToAbsolutePath(fullPath, relativePath) {
if (relativePath.indexOf('://') > -1) {
return '';
}
if (fullPath.startsWith('/')) {
fullPath = '/' + fullPath;
}
const fakeServer = 'https://example.com';
const abs = RelateUrl.relate(fakeServer + fullPath, relativePath, { output: RelateUrl.ABSOLUTE });
return abs.substring(fakeServer.length);
}