31 lines
1.2 KiB
JavaScript
31 lines
1.2 KiB
JavaScript
|
|
|
||
|
|
/** @param {string} href */
|
||
|
|
export function extractId(href) {
|
||
|
|
return href.replace(/^[a-z-]+:\/+?[^/]+/, '') // Remove protocol & domain
|
||
|
|
.replace(/[?&]livereload=\w+/, '') // Remove LiveReload cachebuster
|
||
|
|
.replace(/^\//, '') // Remove root /
|
||
|
|
.replace(/\.[a-zA-Z]+$/, '') // Remove simple extension
|
||
|
|
.replace(/[^.\w-]+/g, '-') // Replace illegal characters
|
||
|
|
.replace(/\./g, ':'); // Replace dots with colons(for valid id)
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @param {Record<string, *>} options
|
||
|
|
* @param {HTMLElement | null} tag
|
||
|
|
*/
|
||
|
|
export function addDataAttr(options, tag) {
|
||
|
|
if (!tag) {return;} // in case of tag is null or undefined
|
||
|
|
for (const opt in tag.dataset) {
|
||
|
|
if (Object.prototype.hasOwnProperty.call(tag.dataset, opt)) {
|
||
|
|
if (opt === 'env' || opt === 'dumpLineNumbers' || opt === 'rootpath' || opt === 'errorReporting') {
|
||
|
|
options[opt] = tag.dataset[opt];
|
||
|
|
} else {
|
||
|
|
try {
|
||
|
|
options[opt] = JSON.parse(tag.dataset[opt]);
|
||
|
|
}
|
||
|
|
catch (_) {}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|