This extension is a Trait to include a configure method that will receive an object parameter and it will call each existent setter for each key with the corresponding value. If there is no setter for a given key, it is discarded. This is very useful for initializing objects or classes and passing a single argument into the constructor.
###Install
$ npm install cocktail-trait-configurable --save
###Usage
User.js
var cocktail = require('cocktail'),
Configurable = require('cocktail-trait-configurable');
cocktail.mix({
'@exports': module,
'@class': 'class',
'@traits': [Configurable],
'@properties': {
firstName: undefined,
lastName: undefined
},
constructor: function (options) {
this.configure(options); // configure method from Configurable
},
setName: function (name) {
var parts = name.split(' '),
last, first;
if(parts && parts.length){
last = parts.pop();
first = parts.join(' ');
this.setFirstName(first);
this.setLastName(last);
}
}
});
The User class defined here, has two properties, and since we used the @properties
annotation to define them, we get the setters (setFirstName
and setLastName
) and getters (getFirstName
and getLastName
) methods for each of them. We have defined a third setter (setName). This setter will be called when we pass a name
as a property. In this case, the setter it’s a sort of helper to split the name into first and last name.
index.js
var User = require('./User'),
john, mike;
// create user using first and last name
john = new User({firstName: 'John', lastName: 'Doe'});
console.log(john.getFirstName()); // John
// or create user using the name setter helper
mike = new User({name: 'Mike Smith'});
console.log(mike.getFirstName()); // Mike
Check the Github Repository for this extension.