X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.maps.server%2Fnode%2Fnode-v4.8.0-win-x64%2Fnode_modules%2Fnpm%2Fnode_modules%2Fnode-gyp%2Fnode_modules%2Fpath-array%2Fnode_modules%2Farray-index%2FREADME.md;fp=org.simantics.maps.server%2Fnode%2Fnode-v4.8.0-win-x64%2Fnode_modules%2Fnpm%2Fnode_modules%2Fnode-gyp%2Fnode_modules%2Fpath-array%2Fnode_modules%2Farray-index%2FREADME.md;h=b8d715d6ebf6c0a67cc6e93d382ffdb392ecab63;hb=2529be6d456deeb07c128603ce4971f1dc29b695;hp=0000000000000000000000000000000000000000;hpb=2636fc31c16c23711cf2b06a4ae8537bba9c1d35;p=simantics%2Fdistrict.git diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/README.md b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/README.md new file mode 100644 index 00000000..b8d715d6 --- /dev/null +++ b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/README.md @@ -0,0 +1,155 @@ +array-index +=========== +### Invoke getter/setter functions on array-like objects +[![Build Status](https://secure.travis-ci.org/TooTallNate/array-index.svg)](http://travis-ci.org/TooTallNate/array-index) + + +This little module provides an `ArrayIndex` constructor function that you can +inherit from with your own objects. When a numbered property gets read, then the +`ArrayIndex.get` function on the object will be invoked. When a numbered property gets +set, then the `ArrayIndex.set` function on the object will be invoked. + + +Installation +------------ + +Install with `npm`: + +``` bash +$ npm install array-index +``` + + +Examples +-------- + +A quick silly example, using `Math.sqrt()` for the "getter": + +``` js +var ArrayIndex = require('array-index'); + +// let's just create a singleton instance. +var a = new ArrayIndex(); + +// the "ArrayIndex.get" function is invoked for each "a[n]" access. +// it is given a single argument, the "index" currently being accessed. +// so here, we're passing in the `Math.sqrt()` function, so accessing +// "a[9]" will return `Math.sqrt(9)`. +a[ArrayIndex.get] = Math.sqrt; + +// the "ArrayIndex.get" and "ArrayIndex.set" functions are only invoked up +// to "a.length", so we must set that manually. +a.length = 10; + +console.log(a); +// [ 0, +// 1, +// 1.4142135623730951, +// 1.7320508075688772, +// 2, +// 2.23606797749979, +// 2.449489742783178, +// 2.6457513110645907, +// 2.8284271247461903, +// 3 ] +``` + +Here's an example of creating a subclass of `ArrayIndex` using `util.inherits()`: + +``` js +var ArrayIndex = require('array-index'); +var inherits = require('util').inherits; + +function MyArray (length) { + // be sure to call the ArrayIndex constructor in your own constructor + ArrayIndex.call(this, length); + + // the "set" object will contain values at indexes previously set, + // so that they can be returned in the "getter" function. This is just a + // silly example, your subclass will have more meaningful logic. + Object.defineProperty(this, 'set', { + value: Object.create(null), + enumerable: false + }); +} + +// inherit from the ArrayIndex's prototype +inherits(MyArray, ArrayIndex); + +MyArray.prototype[ArrayIndex.get] = function (index) { + if (index in this.set) return this.set[index]; + return index * 2; +}; + +MyArray.prototype[ArrayIndex.set] = function (index, v) { + this.set[index] = v; +}; + + +// and now you can create some instances +var a = new MyArray(15); +a[9] = a[10] = a[14] = '_'; +a[0] = 'nate'; + +console.log(a); +// [ 'nate', 2, 4, 6, 8, 10, 12, 14, 16, '_', '_', 22, 24, 26, '_' ] +``` + +API +--- + +The `ArrayIndex` base class is meant to be subclassed, but it also has a few +convenient functions built-in. + +### "length" → Number + +The length of the ArrayIndex instance. The `ArrayIndex.get` and `ArrayIndex.set` functions will +only be invoked on the object up to this "length". You may set this length at any +time to adjust the amount range where the getters/setters will be invoked. + +### "toArray()" → Array + +Returns a new regular Array instance with the same values that this ArrayIndex +class would have. This function calls the `ArrayIndex.get` function repeatedly from +`0...length-1` and returns the "flattened" array instance. + +### "toJSON()" → Array + +All `ArrayIndex` instances get basic support for `JSON.stringify()`, which is +the same as a "flattened" Array being stringified. + +### "toString()" → String + +The `toString()` override is basically just `array.toArray().toString()`. + +### "format()" → String + +The `inspect()` implementation for the REPL attempts to mimic what a regular +Array looks like in the REPL. + + +License +------- + +(The MIT License) + +Copyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.