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