mirror of https://github.com/sveltejs/svelte
parent
829b12e7fc
commit
d36478657c
@ -0,0 +1,26 @@
|
|||||||
|
export default function get_name_from_filename(filename: string) {
|
||||||
|
if (!filename) return null;
|
||||||
|
// eslint-disable-next-line no-useless-escape
|
||||||
|
const parts = filename.split(/[\/\\]/);
|
||||||
|
|
||||||
|
if (parts.length > 1) {
|
||||||
|
const index_match = parts[parts.length - 1].match(/^index(\.\w+)/);
|
||||||
|
if (index_match) {
|
||||||
|
parts.pop();
|
||||||
|
parts[parts.length - 1] += index_match[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const base = parts.pop()
|
||||||
|
.replace(/\.[^.]+$/, "")
|
||||||
|
.replace(/[^a-zA-Z_$0-9]+/g, '_')
|
||||||
|
.replace(/^_/, '')
|
||||||
|
.replace(/_$/, '')
|
||||||
|
.replace(/^(\d)/, '_$1');
|
||||||
|
|
||||||
|
if (!base) {
|
||||||
|
throw new Error(`Could not derive component name from file ${filename}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return base[0].toUpperCase() + base.slice(1);
|
||||||
|
}
|
Loading…
Reference in new issue