diff options
Diffstat (limited to 'node_modules/set-value')
-rw-r--r-- | node_modules/set-value/README.md | 77 | ||||
-rw-r--r-- | node_modules/set-value/index.js | 58 | ||||
-rw-r--r-- | node_modules/set-value/package.json | 16 |
3 files changed, 104 insertions, 47 deletions
diff --git a/node_modules/set-value/README.md b/node_modules/set-value/README.md index 19fbdbb4d..e336d744e 100644 --- a/node_modules/set-value/README.md +++ b/node_modules/set-value/README.md @@ -1,4 +1,4 @@ -# set-value [](https://www.npmjs.com/package/set-value) [](https://npmjs.org/package/set-value) [](https://npmjs.org/package/set-value) [](https://travis-ci.org/jonschlinkert/set-value) +# set-value [](https://www.npmjs.com/package/set-value) [](https://npmjs.org/package/set-value) [](https://npmjs.org/package/set-value) [](https://travis-ci.org/jonschlinkert/set-value) > Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. @@ -14,13 +14,82 @@ $ npm install --save set-value ```js var set = require('set-value'); +set(object, prop, value); +``` + +### Params + +* `object` **{object}**: The object to set `value` on +* `prop` **{string}**: The property to set. Dot-notation may be used. +* `value` **{any}**: The value to set on `object[prop]` + +## Examples +Updates and returns the given object: + +```js var obj = {}; set(obj, 'a.b.c', 'd'); console.log(obj); -//=> {a: {b: c: 'd'}} +//=> { a: { b: { c: 'd' } } } +``` + +### Escaping + +**Escaping with backslashes** + +Prevent set-value from splitting on a dot by prefixing it with backslashes: + +```js +console.log(set({}, 'a\\.b.c', 'd')); +//=> { 'a.b': { c: 'd' } } + +console.log(set({}, 'a\\.b\\.c', 'd')); +//=> { 'a.b.c': 'd' } +``` + +**Escaping with double-quotes or single-quotes** + +Wrap double or single quotes around the string, or part of the string, that should not be split by set-value: + +```js +console.log(set({}, '"a.b".c', 'd')); +//=> { 'a.b': { c: 'd' } } + +console.log(set({}, "'a.b'.c", "d")); +//=> { 'a.b': { c: 'd' } } + +console.log(set({}, '"this/is/a/.file.path"', 'd')); +//=> { 'this/is/a/file.path': 'd' } +``` + +### Bracket support + +set-value does not split inside brackets or braces: + +```js +console.log(set({}, '[a.b].c', 'd')); +//=> { '[a.b]': { c: 'd' } } + +console.log(set({}, "(a.b).c", "d")); +//=> { '(a.b)': { c: 'd' } } + +console.log(set({}, "<a.b>.c", "d")); +//=> { '<a.b>': { c: 'd' } } + +console.log(set({}, "{a..b}.c", "d")); +//=> { '{a..b}': { c: 'd' } } ``` +## History + +### v2.0.0 + +* Adds support for escaping with double or single quotes. See [escaping](#escaping) for examples. +* Will no longer split inside brackets or braces. See [bracket support](#bracket-support) for examples. + +If there are any regressions please create a [bug report](../../issues/new). Thanks! + ## About ### Related projects @@ -42,7 +111,7 @@ Pull requests and stars are always welcome. For bugs and feature requests, [plea | **Commits** | **Contributor** | | --- | --- | -| 53 | [jonschlinkert](https://github.com/jonschlinkert) | +| 59 | [jonschlinkert](https://github.com/jonschlinkert) | | 1 | [vadimdemedes](https://github.com/vadimdemedes) | | 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | @@ -78,4 +147,4 @@ Released under the [MIT License](LICENSE). *** -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.4.2, on February 22, 2017._
\ No newline at end of file +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on June 21, 2017._
\ No newline at end of file diff --git a/node_modules/set-value/index.js b/node_modules/set-value/index.js index e51ece557..000a77e2d 100644 --- a/node_modules/set-value/index.js +++ b/node_modules/set-value/index.js @@ -7,57 +7,45 @@ 'use strict'; -var toPath = require('to-object-path'); +var split = require('split-string'); var extend = require('extend-shallow'); var isPlainObject = require('is-plain-object'); var isObject = require('is-extendable'); -module.exports = function(obj, path, val) { +module.exports = function(obj, prop, val) { if (!isObject(obj)) { return obj; } - if (Array.isArray(path)) { - path = toPath(path); + if (Array.isArray(prop)) { + prop = [].concat.apply([], prop).join('.'); } - if (typeof path !== 'string') { + if (typeof prop !== 'string') { return obj; } - var segs = path.split('.'); - var len = segs.length, i = -1; - var res = obj; - var last; - - while (++i < len) { - var key = segs[i]; - - while (key[key.length - 1] === '\\') { - key = key.slice(0, -1) + '.' + segs[++i]; - } - - if (i === len - 1) { - last = key; - break; - } - - if (!isObject(obj[key])) { - obj[key] = {}; + var keys = split(prop, {sep: '.', brackets: true}); + var len = keys.length; + var idx = -1; + var current = obj; + + while (++idx < len) { + var key = keys[idx]; + if (idx !== len - 1) { + if (!isObject(current[key])) { + current[key] = {}; + } + current = current[key]; + continue; } - obj = obj[key]; - } - if (obj.hasOwnProperty(last) && isObject(obj[last])) { - if (isPlainObject(val)) { - extend(obj[last], val); + if (isPlainObject(current[key]) && isPlainObject(val)) { + current[key] = extend({}, current[key], val); } else { - obj[last] = val; + current[key] = val; } - - } else { - obj[last] = val; } - return res; -}; + return obj; +}; diff --git a/node_modules/set-value/package.json b/node_modules/set-value/package.json index 83f065573..41cda4eb7 100644 --- a/node_modules/set-value/package.json +++ b/node_modules/set-value/package.json @@ -1,13 +1,13 @@ { "name": "set-value", "description": "Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths.", - "version": "0.4.3", + "version": "2.0.0", "homepage": "https://github.com/jonschlinkert/set-value", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ - "<wtgtybhertgeghgtwtg@gmail.com> (https://github.com/wtgtybhertgeghgtwtg)", - "Jon Schlinkert <jon.schlinkert@sellside.com> (http://twitter.com/jonschlinkert)", - "Vadim Demedes <vdemedes@gmail.com> (https://vadimdemedes.com)" + "Jon Schlinkert (http://twitter.com/jonschlinkert)", + "(https://github.com/wtgtybhertgeghgtwtg)", + "Vadim Demedes (https://vadimdemedes.com)" ], "repository": "jonschlinkert/set-value", "bugs": { @@ -27,12 +27,12 @@ "dependencies": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "devDependencies": { - "gulp-format-md": "^0.1.10", - "mocha": "^3.0.2" + "gulp-format-md": "^0.1.12", + "mocha": "^3.4.2" }, "keywords": [ "get", |