Attr Accessor
Convenience factories for creating getter/setters.
Licensed under the MIT license, see LICENSE for more information.
Installation
Attr Accessor is available via npm:
npm install attr-accessor
Or for usage in the browser:
dist/attr-accessor.js
dist/attr-accessor.min.js
Usage
Pass in an object to attr.reader
or attr.writer
to obtain a getter or setter
factory respectively:
get = attr.reader(object)
set = attr.writer(object)
ES2015 (ES6) introduced classes
and has support for getter/setters.
CoffeeScript, on the other hand, has had no elegant way of defining getter/setters,
until now. Use its destructuring syntax in combination with attr.accessor
to
obtain both factories:
[get, set] = attr.accessor(object)
Use attr.accessors
when dealing with classes to obtain two prototypal /
instance-bound factories as well as two static factories:
[get, set, @get, @set] = attr.accessors(object)
Example
class Person
[get, set, @get, @set] = attr.accessors(this)
group = []
constructor: (@firstName, @lastName) ->
group.push this
get name: ->
"#{@firstName} #{@lastName}"
@get count: ->
group.length
new Person('John', 'Doe').name # John Doe
Person.count # 1
Development & Contribution
Attr Accessor is written in ES2015, compiled by Babel, developed with Gulp and tested through Mocha.
Getting this toolchain up and running, is easy and straight-forward:
-
Get the code:
git clone git://github.com/timkurvers/attr-accessor.git
-
Download and install Node.js (includes npm
) for your platform.
-
Install dependencies:
npm install
-
Run gulp
which will automatically build and test the project when source files change.
When not available, run ./node_modules/.bin/gulp
instead.
When contributing, please:
- Fork the repository
- Accompany each logical unit of operation with at least one test
- Open a pull request
- Do not include any distribution files (such as
dist/attr-accessor.js
)