Convert Javascript Prototype Name From PascalCase to file-case

At my day job, I am currently building a pretty complex Aurelia application. One such component of the application is a widget system which allows ES2015 classes to define new widgets and then the system can load them in. I ran into an instance where I needed to convert the class prototype name value to file-case (all lowercased and hyphen separated).

What this will essentially do is take the prototype.name value in PascalCase and convert it. So a classname value of: MyClassName would be converted into my-class-name instead. There isn’t much to the code to be quite honest.

The Gist below has both ES2015 class and traditional prototypal inheritance examples to show its use. Enjoy.

// ES2015 classes
class MyClass {
    // Would return: my-class
    toFileCase() {
        var className = this.constructor.name.toString();
        var normalised = className.replace(/((?!^)[A-Z])/g, '-$1').toLowerCase();
        return normalised;
    }
}

// ES5 prototypal inheritance
function MyClass() {
}
// Would return: my-class
MyClass.prototype.toFileCase = function() {
        var className = this.constructor.name.toString();
        var normalised = className.replace(/((?!^)[A-Z])/g, '-$1').toLowerCase();
        return normalised;
}