bh-property-helpers
This is helper for fast and nice property setter/getter creation in context object.
Usage
var Method = require('bh-property-helpers');
method = new Method({ protected: false });
funciton Context() {
function pickModsProperty() {
return '_object.' + (this._context.get('object').elem ? 'elemMods' : 'mods');
}
method(this)
.before(function () {
this._object = this._context.get('object');
})
.named('attr').changes('_object.attrs').property()
.named('attrs').changes('_object.attrs').property()
.named('bem').changes('_object.bem').value()
.named('cls').changes('_object.cls').value()
.named('content').changes('_object.content').value()
.named('js').changes('_object.js').value()
.named('param').changes('_object').property()
.named('tag').changes('_object.tag').value()
.named('mix').changes('_object.mix').array()
.named('mod').changes(pickModsProperty).property()
.named('mods').changes(pickModsProperty).object();
}
API
Method([options])
Constructor of method builder.
Returns Builder
.
Builder(context)
Returns builder for context object. All methods will be defined on this object.
Returns Builder
.
.named(name)
Defines name for the method.
Returns Builder
.
.changes(propertyPath)
Points created method to propertyPath, which can be String
or Function
. In case of Function
property path will be resolved each time method is called.
Returns Builder
.
.value() / .property() / .array() / .object()
This methods tells builder about value type, with which created method will be working.
Type | What it does | Setter/getter signature |
---|
value() | Just sets passed value to property | function (value, force) |
property() | Sets key-value in property object | function (key, value, force) |
array() | Appends passed value to Array property | function (array, force) |
object() | Extends property with passed object | function (object, force) |
By default this setters will not override previous property value (unless force
is true).
Returns Builder
.