JSPM

function-accessor

0.1.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q24383F
  • License MIT

Higher-Order accessor functions.

Package Exports

  • function-accessor

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (function-accessor) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

function-accessor

Higher-Order accessor functions.

Build Status Code Climate js-standard-style

npm install function-accessor --save

You can also use Duo, Bower or download the files manually.

npm stats

npm NPM downloads David

Usage

var accessor = require('function-accessor')

Features

  • Automatic method chaining on object setters.
  • Initial (default) value support.
  • Input validation on setters.
  • Read-only getter support.

API

accessor()
var assert = require('assert')

var latitude = accessor()

latitude(32.7229)
assert.equal(latitude(), 32.7229)
//=> undefined

latitude(45.49428)
assert.equal(latitude(), 45.49428)
//=> undefined
accessor({ init: … })
var assert = require('assert')

var latitude = accessor({
  init: 32.7229
})

assert.equal(latitude(), 32.7229)
//=> undefined

latitude(45.49428)
assert.equal(latitude(), 45.49428)
//=> undefined
accessor({ check: Function })
var assert = require('assert')
var isNumber = require('util').isNumber

var latitude = accessor({
  check: isNumber
})

latitude(45.49428)
assert.equal(latitude(), 45.49428)
//=> undefined

latitude('this is not a number!!')
//=> RangeError
accessor({ check: RegExp })
var assert = require('assert')

var pin = accessor({
  check: /^\d{4}$/
})

latitude(1234)
assert.equal(pin(), 1234)
//=> undefined

pin('123')
//=> RangeError
accessor({ readonly: true })
var latitude = accessor({
  init: 32.7229,
  readonly: true
})

assert.equal(latitude(), 32.7229)
//=> undefined

latitude(45.49428)
//=> TypeError
accessor({ self: this })
var assert = require('assert')

var address = {
  street: accessor({
    self: address
  }),

  city: accessor({
    self: address
  }),

  state: accessor({
    self: address
  }),

  zip: accessor({
    self: address
  }),

  country: accessor({
    self: address
  })
}

address
  .street('200 E Main Street')
  .city('Phoenix')
  .state('AZ')
  .zip('85123')
  .country('USA')

assert.equal(address.country(), 'USA')
//=> undefined

Contributing

SEE: contributing.md

Alternatives / Inspiration

Licenses

GitHub license