https://github.com/Daiz/etter
Simpler getters and setters for JavaScript/CoffeeScript/LiveScript.
https://github.com/Daiz/etter
Last synced: over 1 year ago
JSON representation
Simpler getters and setters for JavaScript/CoffeeScript/LiveScript.
- Host: GitHub
- URL: https://github.com/Daiz/etter
- Owner: Daiz
- License: mit
- Created: 2014-02-18T20:25:13.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2014-02-18T21:02:38.000Z (over 12 years ago)
- Last Synced: 2025-03-13T06:15:50.538Z (over 1 year ago)
- Language: LiveScript
- Size: 133 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](http://coffeescript.org/) and [LiveScript](http://livescript.net/).
## Installation
**etter** can be installed via npm:
```bash
$ npm install etter
```
## Examples
#### JavaScript
```javascript
var etter = require('etter');
function Test() {
// bind etter to our current object as 'define'
// this binding is required to make etter work, so don't forget it
var define = etter.bind(this);
// 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
this.duration = 0;
// this is needed in the update function below
var self = this;
// the update function
var update = function(arg) {
self.duration = self.endTime - self.startTime;
return arg;
};
// define startTime and endTime with getter/setters
define('startTime', {
get: function() { return _startTime; },
set: function(num) { _startTime = num; return update(num); }
});
define('endTime', {
get: function() { return _endTime; },
set: function(num) { _endTime = num; return update(num); }
});
}
var test = new Test();
test.startTime = 500;
test.endTime = 1500;
test.duration; // => 1000
```
#### CoffeeScript
```coffeescript
etter = require 'etter'
class Test
constructor: ->
# 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
_startTime = 0
_endTime = 0
# this value will be recalculated whenever the two times are adjusted
@duration = 0
# the update function
update = (arg) =>
@duration = @endTime - @startTime
arg
# define startTime and endTime with getter/setters
define 'startTime', {
get: -> _startTime
set: (num) -> _startTime = num; update num
}
define 'endTime', {
get: -> _endTime
set: (num) -> _endTime = num; update num
}
test = new Test()
test.startTime = 500
test.endTime = 1500
test.duration # => 1000
```
#### LiveScript
```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 = 500
test.end-time = 1500
test.duration # => 1000
```