@mieweb/wikigdrive
Version:
Google Drive to MarkDown synchronization
59 lines (58 loc) • 2.1 kB
JavaScript
import { absolutizeUrl, relateUrl } from './utils/RelateUrl.js';
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(host + basePath, host + localPath)));
}
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(host + basePath, host + localPath)), 'dirURLs');
}
export function convertToAbsolutePath(fullPath, relativePath) {
if (relativePath.indexOf('://') > -1) {
return '';
}
if (!fullPath.startsWith('/')) {
fullPath = '/' + fullPath;
}
const fakeServer = 'https://example.com';
const abs = absolutizeUrl(fakeServer + fullPath, relativePath);
return abs.substring(fakeServer.length);
}