@mieweb/wikigdrive
Version:
Google Drive to MarkDown synchronization
69 lines (68 loc) • 2.33 kB
JavaScript
function stripUrlSuffix(id) {
if (id.indexOf('/') > 0) {
id = id.substring(0, id.indexOf('/'));
}
if (id.indexOf('?') > 0) {
id = id.substring(0, id.indexOf('?'));
}
if (id.indexOf('&') > 0) {
id = id.substring(0, id.indexOf('&'));
}
if (id.match(/^[A-Z0-9_-]+$/ig)) {
return id;
}
return null;
}
export function replaceUrlsWithIds(text) {
text = text.replaceAll('https://drive.google.com/open?id%3D', 'https://drive.google.com/open?id=');
text = text.replaceAll('https://drive.google.com/open?id=', 'gdoc:');
return text;
}
export function urlToFolderId(url) {
if (!url) {
return null;
}
url = url.replaceAll('../', '');
if (url.match(/drive\.google\.com\/drive.*folders\//)) {
const id = url.substring(url.indexOf('/folders/') + '/folders/'.length);
return stripUrlSuffix(id);
}
if (url.match(/drive.google.com\/.*\/open/)) {
url = url.replace(/drive.google.com\/.*\/open/, 'https://drive.google.com/open');
}
if (url.startsWith('http://drive.google.com/')) {
url = url.replace('http://drive.google.com/', 'https://drive.google.com/');
}
if (url.indexOf('https://drive.google.com/open?id%3D') > -1) {
url = url.replace('https://drive.google.com/open?id%3D', 'https://drive.google.com/open?id=');
}
if (url.indexOf('https://drive.google.com/open?id=') > -1) {
let id = url.substring(url.indexOf('https://drive.google.com/open?id=') + 'https://drive.google.com/open?id='.length);
if (id.indexOf('&') > 0) {
id = id.substring(0, id.indexOf('&'));
}
if (id.match(/^[A-Z0-9_-]+$/ig)) {
return id;
}
return null;
}
if (url.startsWith('https://docs.google.com/drawings/')) {
const id = url.split('/d/')[1];
return stripUrlSuffix(id);
}
if (url.indexOf('docs.google.com/document/') > 0) {
const id = url.split('/d/')[1];
return stripUrlSuffix(id);
}
if (url.match(/^[A-Z0-9_-]+$/ig)) {
return url;
}
return null;
}
export function getUrlHash(url) {
const idx = url.indexOf('#');
if (idx >= 0 && idx < url.length - 1) {
return url.substring(idx).replace('#heading=h.', '#_');
}
return '';
}