/* eslint-disable no-control-regex */
export function stripQuotation(str: string) {
    return str.replace(/^['"](.*?)['"]$/g, '$1');
}

export function filename2varname(filename: string) {
    return string2varname(
        filename
            // remove extension (eg. .css)
            .replace(/(?=.*)\.\w+$/, '')
            // remove potential .st extension prefix
            .replace(/\.st$/, '')
    );
}

export function string2varname(str: string) {
    return (
        str
            // allow only letters, numbers, dashes, underscores, and non-ascii
            .replace(/[\x00-\x7F]+/gm, (matchAscii) => {
                return matchAscii.replace(/[^0-9a-zA-Z_-]/gm, '');
            })
            // replace multiple dashes with single dash
            .replace(/--+/gm, '-')
            // replace multiple underscores with single underscore
            .replace(/__+/gm, '_')
            // remove leading digits from start
            .replace(/^\d+/gm, '')
    );
}
