etter - Simpler getter/setters
Writing getters and setters in JavaScript is pretty verbose and boilerplate-y. etter is a small module for Node.js to make things simpler and nicer. Works nicely with plain JavaScript as well as CoffeeScript and LiveScript.
Installation
etter can be installed via npm:
$ npm install etter
Examples
JavaScript
var etter = ; { // bind etter to our current object as 'define' // this binding is required to make etter work, so don't forget it var define = etter; // the actual values behind the getters and setters var _startTime = 0; var _endTime = 0; // this value will be recalculated whenever the two times are adjusted thisduration = 0; // this is needed in the update function below var self = this; // the update function var { selfduration = selfendTime - selfstartTime; return arg; }; // define startTime and endTime with getter/setters ; ;} var test = ;teststartTime = 500;testendTime = 1500;testduration; // => 1000
CoffeeScript
etter = require 'etter' : -> # bind etter to our current object as 'define' # this binding is required to make etter work, so don't forget it define = etterbind @ # the actual values behind the getters and setters _startTime = 0 _endTime = 0 # this value will be recalculated whenever the two times are adjusted @duration = 0 # the update function = @duration = @endTime - @startTime arg # define startTime and endTime with getter/setters define 'startTime' : -> _startTime : _startTime = num; update num define 'endTime' : -> _endTime : _endTime = num; update num test = test.startTime = 500test.endTime = 1500testduration # => 1000
LiveScript
require! \etter class Test -> # bind etter to our current object as 'define' # this binding is required to make etter work, so don't forget it define = etter.bind @ # the actual values behind the getters and setters _start-time = 0 _end-time = 0 # this value will be recalculated whenever the two times are adjusted @duration = 0 # the update function update = ~> @duration = @end-time - @start-time it # define start-time and end-time with getter/setters define \start-time, get: -> _start-time set: -> _start-time := it; update it define \end-time, get: -> _end-time set: -> _end-time := it; update it test = new Test!test.start-time = 500test.end-time = 1500test.duration # => 1000