DSL support for track.
npm install track-dsl
For example, create DSL having #getter
and #setter
.
class Hoge extends Base {
static definer() {
getter('foo'); // Define instance.foo
getter('bar'); // Define instance.bar
setter('piyo'); // Define instance.piyo=
}
}
const TrackDSL = require('track-dsl');
class Base {
constructor() {
const dsl = new TrackDSL(this, {
'getter': {func: this._defineGetter, binding: this},
'setter': {func: this._defineSetter, binding: this},
});
dsl.evaluate(this.constructor.definer);
}
_defineGetter(name) {
Object.defineProperty(this, name, {
get: function() {
return this[`_${name}`];
}
});
}
_defineSetter(name) {
Object.defineProperty(this, name, {
set: function(value) {
this[`_${name}`] = value;
}
});
}
}
const hoge = new Hoge();
hoge.piyo = 'piyo';
hoge.foo;