{"_id":"utils-deep-set","_rev":"5-c619a7848eb4de219646ba4f9a61e30e","name":"utils-deep-set","description":"Deep set a nested property.","dist-tags":{"latest":"1.0.1"},"versions":{"0.0.0":{"name":"utils-deep-set","version":"0.0.0","description":"Deep set a nested property.","author":{"name":"Athan Reines","email":"kgryte@gmail.com"},"contributors":[{"name":"Athan Reines","email":"kgryte@gmail.com"}],"scripts":{"test":"mocha","test-cov":"istanbul cover ./node_modules/.bin/_mocha --dir ./reports/coverage -- -R spec","coveralls":"istanbul cover ./node_modules/.bin/_mocha --dir ./reports/coveralls/coverage --report lcovonly -- -R spec && cat ./reports/coveralls/coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./reports/coveralls"},"main":"./lib","repository":{"type":"git","url":"git://github.com/kgryte/utils-deep-set.git"},"keywords":["utilities","utility","utils","util","deep","set","assign","object","array","nested","property"],"bugs":{"url":"https://github.com/kgryte/utils-deep-set/issues"},"dependencies":{"validate.io-array":"^1.0.6","validate.io-boolean-primitive":"^1.0.0","validate.io-object":"^1.0.4","validate.io-string-primitive":"^1.0.0"},"devDependencies":{"chai":"3.x.x","mocha":"2.x.x","coveralls":"^2.11.1","istanbul":"^0.3.0","jshint":"2.x.x","jshint-stylish":"^1.0.0"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"}],"gitHead":"e8a15579e44d58f3b0c3ce4dc320c8dea4f8c5fe","homepage":"https://github.com/kgryte/utils-deep-set#readme","_id":"utils-deep-set@0.0.0","_shasum":"cc8e7a8924f2814616f169107ab9ccd2117f7325","_from":".","_npmVersion":"2.8.3","_nodeVersion":"0.10.29","_npmUser":{"name":"kgryte","email":"kgryte@gmail.com"},"dist":{"shasum":"cc8e7a8924f2814616f169107ab9ccd2117f7325","tarball":"https://registry.npmjs.org/utils-deep-set/-/utils-deep-set-0.0.0.tgz","integrity":"sha512-ZB3dNQK8T99YiauN2usyOMx6Fu0V7bmTIW0Jvduoe2vts1DsgKwXEJaAIyszEdTvscKe+EmD6caZRqICX2u6BQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF0QtZgLIxiDBjsT7yB8dG6bJugsfXU1HNDB9/5TUsdNAiEArkRzaIkQrYklE7Npr+LJMoZn1NDibiunZ6xvRcF/QQY="}]},"maintainers":[{"name":"kgryte","email":"kgryte@gmail.com"}]},"1.0.0":{"name":"utils-deep-set","version":"1.0.0","description":"Deep set a nested property.","author":{"name":"Athan Reines","email":"kgryte@gmail.com"},"contributors":[{"name":"Athan Reines","email":"kgryte@gmail.com"}],"scripts":{"test":"mocha","test-cov":"istanbul cover ./node_modules/.bin/_mocha --dir ./reports/coverage -- -R spec","coveralls":"istanbul cover ./node_modules/.bin/_mocha --dir ./reports/coveralls/coverage --report lcovonly -- -R spec && cat ./reports/coveralls/coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./reports/coveralls"},"main":"./lib","repository":{"type":"git","url":"git://github.com/kgryte/utils-deep-set.git"},"keywords":["utilities","utility","utils","util","deep","set","assign","object","array","nested","property"],"bugs":{"url":"https://github.com/kgryte/utils-deep-set/issues"},"dependencies":{"validate.io-array":"^1.0.6","validate.io-boolean-primitive":"^1.0.0","validate.io-object":"^1.0.4","validate.io-string-primitive":"^1.0.0"},"devDependencies":{"chai":"3.x.x","mocha":"2.x.x","coveralls":"^2.11.1","istanbul":"^0.3.0","jshint":"2.x.x","jshint-stylish":"^1.0.0"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"}],"gitHead":"8bbe217555be8da2e5f48074caff57348d2212da","homepage":"https://github.com/kgryte/utils-deep-set#readme","_id":"utils-deep-set@1.0.0","_shasum":"31b6360f653e62853daab10b23534aa27b7d7378","_from":".","_npmVersion":"2.8.3","_nodeVersion":"0.10.29","_npmUser":{"name":"kgryte","email":"kgryte@gmail.com"},"dist":{"shasum":"31b6360f653e62853daab10b23534aa27b7d7378","tarball":"https://registry.npmjs.org/utils-deep-set/-/utils-deep-set-1.0.0.tgz","integrity":"sha512-4muGOb95KZaUzfxAF/4b9KPCPwaHfoFouoPcWPziRHPz9yocz52KpWetrO9K5siTRO8rrMKhuxzAWj+H9rgGtw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUkYgErE3F5wbZjnD0Ic4+S6tIel6DPzq6Q/xrqZGlxgIgZw0ndDjDP+pFe21aXhF4crRZnKALsiS51J7+Ceu8NMk="}]},"maintainers":[{"name":"kgryte","email":"kgryte@gmail.com"}]},"1.0.1":{"name":"utils-deep-set","version":"1.0.1","description":"Deep set a nested property.","author":{"name":"Athan Reines","email":"kgryte@gmail.com"},"contributors":[{"name":"Athan Reines","email":"kgryte@gmail.com"}],"scripts":{"test":"mocha","test-cov":"istanbul cover ./node_modules/.bin/_mocha --dir ./reports/coverage -- -R spec","coveralls":"istanbul cover ./node_modules/.bin/_mocha --dir ./reports/coveralls/coverage --report lcovonly -- -R spec && cat ./reports/coveralls/coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./reports/coveralls"},"main":"./lib","repository":{"type":"git","url":"git://github.com/kgryte/utils-deep-set.git"},"keywords":["utilities","utility","utils","util","deep","set","assign","object","array","nested","property"],"bugs":{"url":"https://github.com/kgryte/utils-deep-set/issues"},"dependencies":{"validate.io-array":"^1.0.6","validate.io-boolean-primitive":"^1.0.0","validate.io-object":"^1.0.4","validate.io-string-primitive":"^1.0.0"},"devDependencies":{"chai":"3.x.x","mocha":"2.x.x","coveralls":"^2.11.1","istanbul":"^0.3.0","jshint":"2.x.x","jshint-stylish":"^1.0.0"},"license":"MIT","gitHead":"b1a566d8d99c9bc99cd2153685fdd2848e7ed78d","homepage":"https://github.com/kgryte/utils-deep-set#readme","_id":"utils-deep-set@1.0.1","_shasum":"666af93ccd1d221c3fcafdf2151a22ee0bcb06fe","_from":".","_npmVersion":"2.8.3","_nodeVersion":"0.10.29","_npmUser":{"name":"kgryte","email":"kgryte@gmail.com"},"dist":{"shasum":"666af93ccd1d221c3fcafdf2151a22ee0bcb06fe","tarball":"https://registry.npmjs.org/utils-deep-set/-/utils-deep-set-1.0.1.tgz","integrity":"sha512-nT67yP4v6WytThPZaY2UdAzV428cgalXx7E8z7JuMqgA3q/G6NWAEUV4oChkDpCDhk3AvHbtMna+ZFlSnQTVWQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBN7WF8QY96SWzaM0wYlRNU/TBP+Yk3C8NTicDfarFh6AiBvzpkSiIVqUfHxTvjfdOAhWq4cyax+HzNRpOjdhkdwsw=="}]},"maintainers":[{"name":"kgryte","email":"kgryte@gmail.com"}]}},"readme":"Deep Set\n===\n[![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coverage Status][coveralls-image]][coveralls-url] [![Dependencies][dependencies-image]][dependencies-url]\n\n> Deep set a nested property.\n\n\n## Installation\n\n``` bash\n$ npm install utils-deep-set\n```\n\nFor use in the browser, use [browserify](https://github.com/substack/node-browserify).\n\n\n## Usage\n\n``` javascript\nvar deepSet = require( 'utils-deep-set' );\n```\n\n#### deepSet( obj, path, value[, options] )\n\nDeep set a nested property.\n\n``` javascript\nvar obj = { 'a': { 'b': { 'c': 'd' } } };\n\nvar bool = deepSet( obj, 'a.b.c', 'beep' );\n/*\n\t{ 'a': { 'b': { 'c': 'beep' } } }\n*/\n```\n\nIf the function is able to deep set a nested property, the function returns `true`; otherwise, the function returns `false`.\n\n``` javascript\nvar bool = deepSet( obj, 'a.b.c', 'woot' );\n// returns true\n\nbool = deepSet( obj, 'a.beep.c', 'boop' );\n// returns false\n\nbool = deepSet( null, 'a.beep.c', 'boop' );\n// returns false\n\nbool = deepSet( 'bap', 'a.beep.c', 'boop' );\n// returns false\n```\n\nFor `paths` including `arrays`, specify the numeric index.\n\n``` javascript\nvar arr = [\n\t{ 'a': [ {'x': 5} ] },\n\t{ 'a': [ {'x': 10} ] }\n];\n\nvar bool = deepSet( arr, '1.a.0.x', 25 );\n/*\n\t[\n\t\t{ 'a': [ {'x': 5} ] },\n\t\t{ 'a': [ {'x': 25} ] }\n\t]\n*/\n```\n\nThe key `path` may be specified as either a delimited `string` or a key `array`.\n\n``` javascript\nvar obj = { 'a': { 'b': { 'c': 'd' } } };\n\nvar bool = deepSet( obj, ['a','b','c'], 'beep' );\n/*\n\t{ 'a': { 'b': { 'c': 'beep' } } }\n*/\n```\n\nIf `value` is a `function`, the argument is treated as a `callback` and should return a value to set.\n\n``` javascript\nfunction set( val ) {\n\tvar ch = val;\n\tfor ( var i = 0; i < 4; i++ ) {\n\t\tval += ch;\n\t}\n\treturn val;\n}\nvar obj = { 'a': { 'b': { 'c': 'd' } } };\n\nvar bool = deepSet( obj, 'a.b.c', set );\n/*\n\t{ 'a': { 'b': { 'c': 'ddddd' } } }\n*/\n```\n\nThe function accepts the following `options`:\n\n*\t__sep__: key path separator. Default: `'.'`.\n*\t__create__: `boolean` indicating whether to create a path if the key path does not already exist. Default: `false`.\n\nBy default, the function assumes `dot` separated key values. To specify an alternative separator, set the `sep` option.\n\n``` javascript\nvar obj = { 'a': { 'b': { 'c': 'd' } } };\n\nvar bool = deepSet( obj, 'a/b/c', 'beep', {\n\t'sep': '/'\t\n});\n/*\n\t{ 'a': { 'b': { 'c': 'beep' } } }\n*/\n```\n\nTo create a key path which does not already exist, set the `create` option to `true`.\n\n``` javascript\nvar bool = deepSet( obj, 'a.e.c', 'boop', {\n\t'create': true\t\n});\n/*\n\t{ \n\t\t'a': { \n\t\t\t'b': {\n\t\t\t\t'c': 'beep'\n\t\t\t}, \n\t\t\t'e': {\n\t\t\t\t'c': 'boop'\n\t\t\t} \n\t\t}\n\t}\n*/\n```\n\n\n#### deepSet.factory( path[, options] )\n\nCreates a reusable deep set factory. The factory method ensures a `deepSet` function is configured identically by using the same set of provided `options`.\n\n``` javascript\nvar dset = deepSet.factory( 'a/b/c', {\n\t'create': true,\n\t'sep': '/'\n});\n```\n\n\n#### dset( obj, value )\n\nDeep sets a nested property.\n\n``` javascript\nvar obj = { 'a': { 'b': { 'c': 'd' } } };\n\nvar bool = dset( obj, 'beep' );\n/*\n\t{ 'a': { 'b': { 'c': 'beep' } } }\n*/\n```\n\n\n\n## Examples\n\n``` javascript\nvar deepSet = require( 'utils-deep-set' );\n\nvar data,\n\tbool,\n\tkeys,\n\ti;\n\nfunction set( val ) {\n\treturn val * 10;\n}\n\ndata = new Array( 100 );\nfor ( i = 0; i < data.length; i++ ) {\n\tdata[ i ] = {\n\t\t'x': Date.now(),\n\t\t'y': [ Math.random(), Math.random(), i ]\n\t};\n}\n\nkeys = [ 0, 'y', 2 ];\nfor ( i = 0; i < data.length; i++ ) {\n\tkeys[ 0 ] = i;\n\tbool = deepSet( data, keys, set );\n\tif ( !bool ) {\n\t\tconsole.error( 'Unable to deep set value.' );\n\t}\n}\nconsole.log( data );\n```\n\nTo run the example code from the top-level application directory,\n\n``` bash\n$ node ./examples/index.js\n```\n\n\n## Tests\n\n### Unit\n\nUnit tests use the [Mocha](http://mochajs.org/) test framework with [Chai](http://chaijs.com) assertions. To run the tests, execute the following command in the top-level application directory:\n\n``` bash\n$ make test\n```\n\nAll new feature development should have corresponding unit tests to validate correct functionality.\n\n\n### Test Coverage\n\nThis repository uses [Istanbul](https://github.com/gotwarlost/istanbul) as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:\n\n``` bash\n$ make test-cov\n```\n\nIstanbul creates a `./reports/coverage` directory. To access an HTML version of the report,\n\n``` bash\n$ make view-cov\n```\n\n\n---\n## License\n\n[MIT license](http://opensource.org/licenses/MIT). \n\n\n## Copyright\n\nCopyright &copy; 2015. Athan Reines.\n\n\n[npm-image]: http://img.shields.io/npm/v/utils-deep-set.svg\n[npm-url]: https://npmjs.org/package/utils-deep-set\n\n[travis-image]: http://img.shields.io/travis/kgryte/utils-deep-set/master.svg\n[travis-url]: https://travis-ci.org/kgryte/utils-deep-set\n\n[coveralls-image]: https://img.shields.io/coveralls/kgryte/utils-deep-set/master.svg\n[coveralls-url]: https://coveralls.io/r/kgryte/utils-deep-set?branch=master\n\n[dependencies-image]: http://img.shields.io/david/kgryte/utils-deep-set.svg\n[dependencies-url]: https://david-dm.org/kgryte/utils-deep-set\n\n[dev-dependencies-image]: http://img.shields.io/david/dev/kgryte/utils-deep-set.svg\n[dev-dependencies-url]: https://david-dm.org/dev/kgryte/utils-deep-set\n\n[github-issues-image]: http://img.shields.io/github/issues/kgryte/utils-deep-set.svg\n[github-issues-url]: https://github.com/kgryte/utils-deep-set/issues\n","maintainers":[{"name":"kgryte","email":"kgryte@gmail.com"}],"time":{"modified":"2022-06-28T07:24:45.627Z","created":"2015-06-08T06:24:30.704Z","0.0.0":"2015-06-08T06:24:30.704Z","1.0.0":"2015-06-08T06:24:51.837Z","1.0.1":"2015-06-08T06:32:04.475Z"},"homepage":"https://github.com/kgryte/utils-deep-set#readme","keywords":["utilities","utility","utils","util","deep","set","assign","object","array","nested","property"],"repository":{"type":"git","url":"git://github.com/kgryte/utils-deep-set.git"},"contributors":[{"name":"Athan Reines","email":"kgryte@gmail.com"}],"author":{"name":"Athan Reines","email":"kgryte@gmail.com"},"bugs":{"url":"https://github.com/kgryte/utils-deep-set/issues"},"readmeFilename":"README.md","license":"MIT"}