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;
}