/attr-accessor

Convenience factories for creating getter/setters

Primary LanguageJavaScriptMIT LicenseMIT

Attr Accessor

Version Build Status Maintainability Test Coverage Known Vulnerabilities

Convenience factories for creating getter/setters.

Licensed under the MIT license.

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 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:

  1. Get the code:

    git clone git://github.com/timkurvers/attr-accessor.git
  2. Download and install Node.js – including npm – for your platform.

  3. Install dependencies:

    npm install
  4. Run npm run gulp which will automatically build and test the project when source files change.

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)