dot-object 1.7.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -0
- package/README.md +2 -2
- package/dist/dot-object.js +13 -13
- package/dist/dot-object.min.js +1 -1
- package/gulpfile.js +3 -3
- package/index.js +13 -13
- package/package.json +9 -9
- package/src/dot-object.js +13 -13
- package/test/array_notation.js +17 -17
- package/test/dot-json.js +33 -11
- package/test/move.js +6 -6
- package/test/override.js +3 -3
- package/test/transfer.js +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# ChangeLog
|
|
2
2
|
|
|
3
|
+
## 2018-10-26 Version 1.7.1
|
|
4
|
+
* [[`e1bb99c83e`](https://github.com/rhalff/dot-object/commit/e1bb99c83e)] - Fix isIndex numeric key matching. (Fixed by mrdivyansh #31)
|
|
5
|
+
|
|
3
6
|
## 2017-09-20 Version 1.7.0
|
|
4
7
|
* let .dot and .object understand empty objects / arrays
|
|
5
8
|
|
package/README.md
CHANGED
|
@@ -327,9 +327,9 @@ Result:
|
|
|
327
327
|
}
|
|
328
328
|
```
|
|
329
329
|
|
|
330
|
-
## Using a different
|
|
330
|
+
## Using a different separator
|
|
331
331
|
|
|
332
|
-
If you do not like dot notation, you are free to specify a different
|
|
332
|
+
If you do not like dot notation, you are free to specify a different separator.
|
|
333
333
|
|
|
334
334
|
```javascript
|
|
335
335
|
var Dot = require('dot-object');
|
package/dist/dot-object.js
CHANGED
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
function isIndex(k) {
|
|
34
|
-
return /^\d
|
|
34
|
+
return /^\d+$/.test(k)
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
function isObject(val) {
|
|
@@ -53,14 +53,14 @@
|
|
|
53
53
|
return path.split(sep)
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
function DotObject(
|
|
56
|
+
function DotObject(separator, override, useArray) {
|
|
57
57
|
if (!(this instanceof DotObject)) {
|
|
58
|
-
return new DotObject(
|
|
58
|
+
return new DotObject(separator, override, useArray)
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
if (typeof override === 'undefined') override = false
|
|
62
62
|
if (typeof useArray === 'undefined') useArray = true
|
|
63
|
-
this.
|
|
63
|
+
this.separator = separator || '.'
|
|
64
64
|
this.override = override
|
|
65
65
|
this.useArray = useArray
|
|
66
66
|
this.keepArray = false
|
|
@@ -140,11 +140,11 @@
|
|
|
140
140
|
|
|
141
141
|
Object.keys(obj).forEach(function(k) {
|
|
142
142
|
var mod = mods === undefined ? null : mods[k]
|
|
143
|
-
|
|
144
|
-
var ok = parsePath(k, self.
|
|
143
|
+
// normalize array notation.
|
|
144
|
+
var ok = parsePath(k, self.separator).join(self.separator)
|
|
145
145
|
|
|
146
|
-
if (ok.indexOf(self.
|
|
147
|
-
self._fill(ok.split(self.
|
|
146
|
+
if (ok.indexOf(self.separator) !== -1) {
|
|
147
|
+
self._fill(ok.split(self.separator), obj, obj[k], mod)
|
|
148
148
|
delete obj[k]
|
|
149
149
|
} else if (self.override) {
|
|
150
150
|
obj[k] = _process(obj[k], mod)
|
|
@@ -161,8 +161,8 @@
|
|
|
161
161
|
* @param {Function|Array} mod optional modifier
|
|
162
162
|
*/
|
|
163
163
|
DotObject.prototype.str = function(path, v, obj, mod) {
|
|
164
|
-
if (path.indexOf(this.
|
|
165
|
-
this._fill(path.split(this.
|
|
164
|
+
if (path.indexOf(this.separator) !== -1) {
|
|
165
|
+
this._fill(path.split(this.separator), obj, v, mod)
|
|
166
166
|
} else if (!obj.hasOwnProperty(path) || this.override) {
|
|
167
167
|
obj[path] = _process(v, mod)
|
|
168
168
|
}
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
var key
|
|
188
188
|
var cp
|
|
189
189
|
|
|
190
|
-
keys = parsePath(path, this.
|
|
190
|
+
keys = parsePath(path, this.separator)
|
|
191
191
|
for (i = 0; i < keys.length; i++) {
|
|
192
192
|
key = parseKey(keys[i], obj)
|
|
193
193
|
if (obj && typeof obj === 'object' && key in obj) {
|
|
@@ -371,7 +371,7 @@
|
|
|
371
371
|
if (typeof val === 'undefined') {
|
|
372
372
|
return obj
|
|
373
373
|
}
|
|
374
|
-
keys = parsePath(path, this.
|
|
374
|
+
keys = parsePath(path, this.separator)
|
|
375
375
|
|
|
376
376
|
for (i = 0; i < keys.length; i++) {
|
|
377
377
|
key = keys[i]
|
|
@@ -471,7 +471,7 @@
|
|
|
471
471
|
) {
|
|
472
472
|
return this.dot(obj[key], tgt, path.concat(key))
|
|
473
473
|
} else {
|
|
474
|
-
tgt[path.concat(key).join(this.
|
|
474
|
+
tgt[path.concat(key).join(this.separator)] = obj[key]
|
|
475
475
|
}
|
|
476
476
|
}.bind(this))
|
|
477
477
|
return tgt
|
package/dist/dot-object.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,r){"use strict";function
|
|
1
|
+
!function(t,r){"use strict";function s(t,r){var e,i;if("function"==typeof r)void 0!==(i=r(t))&&(t=i);else if(Array.isArray(r))for(e=0;e<r.length;e++)void 0!==(i=r[e](t))&&(t=i);return t}function c(t){return"[object Object]"===Object.prototype.toString.call(t)}function f(t){return Object(t)===t}function p(t){return 0===Object.keys(t).length}function a(t,r){return 0<=t.indexOf("[")&&(t=t.replace(/\[/g,".").replace(/]/g,"")),t.split(r)}function i(t,r,e){if(!(this instanceof i))return new i(t,r,e);void 0===r&&(r=!1),void 0===e&&(e=!0),this.separator=t||".",this.override=r,this.useArray=e,this.keepArray=!1,this.cleanup=[]}var e=new i(".",!1,!0);function n(t){return function(){return e[t].apply(e,arguments)}}i.prototype._fill=function(t,r,e,i){var n,o=t.shift();if(0<t.length){if(r[o]=r[o]||(this.useArray&&(n=t[0],/^\d+$/.test(n))?[]:{}),!f(r[o])){if(!this.override){if(!f(e)||!p(e))throw new Error("Trying to redefine `"+o+"` which is a "+typeof r[o]);return}r[o]={}}this._fill(t,r[o],e,i)}else{if(!this.override&&f(r[o])&&!p(r[o])){if(!f(e)||!p(e))throw new Error("Trying to redefine non-empty obj['"+o+"']");return}r[o]=s(e,i)}},i.prototype.object=function(i,n){var o=this;return Object.keys(i).forEach(function(t){var r=void 0===n?null:n[t],e=a(t,o.separator).join(o.separator);-1!==e.indexOf(o.separator)?(o._fill(e.split(o.separator),i,i[t],r),delete i[t]):o.override&&(i[t]=s(i[t],r))}),i},i.prototype.str=function(t,r,e,i){return-1!==t.indexOf(this.separator)?this._fill(t.split(this.separator),e,r,i):e.hasOwnProperty(t)&&!this.override||(e[t]=s(r,i)),e},i.prototype.pick=function(t,r,e){var i,n,o,s,f,p,c;for(n=a(t,this.separator),i=0;i<n.length;i++){if(p=n[i],c=r,s="-"===p[0]&&Array.isArray(c)&&/^-\d+$/.test(p)?c.length+parseInt(p,10):p,!(r&&"object"==typeof r&&s in r))return;if(i===n.length-1)return e?(o=r[s],delete r[s],Array.isArray(r)&&(f=n.slice(0,-1).join("."),-1===this.cleanup.indexOf(f)&&this.cleanup.push(f)),o):r[s];r=r[s]}return e&&Array.isArray(r)&&(r=r.filter(function(t){return void 0!==t})),r},i.prototype.remove=function(t,r){var e;if(this.cleanup=[],Array.isArray(t)){for(e=0;e<t.length;e++)this.pick(t[e],r,!0);return this._cleanup(r),r}return this.pick(t,r,!0)},i.prototype._cleanup=function(t){var r,e,i,n;if(this.cleanup.length){for(e=0;e<this.cleanup.length;e++)r=(r=(n=(i=this.cleanup[e].split(".")).splice(0,-1).join("."))?this.pick(n,t):t)[i[0]].filter(function(t){return void 0!==t}),this.set(this.cleanup[e],r,t);this.cleanup=[]}},i.prototype.del=i.prototype.remove,i.prototype.move=function(t,r,e,i,n){return"function"==typeof i||Array.isArray(i)?this.set(r,s(this.pick(t,e,!0),i),e,n):(n=i,this.set(r,this.pick(t,e,!0),e,n)),e},i.prototype.transfer=function(t,r,e,i,n,o){return"function"==typeof n||Array.isArray(n)?this.set(r,s(this.pick(t,e,!0),n),i,o):(o=n,this.set(r,this.pick(t,e,!0),i,o)),i},i.prototype.copy=function(t,r,e,i,n,o){return"function"==typeof n||Array.isArray(n)?this.set(r,s(JSON.parse(JSON.stringify(this.pick(t,e,!1))),n),i,o):(o=n,this.set(r,this.pick(t,e,!1),i,o)),i},i.prototype.set=function(t,r,e,i){var n,o,s,f;if(void 0===r)return e;for(s=a(t,this.separator),n=0;n<s.length;n++){if(f=s[n],n===s.length-1)if(i&&c(r)&&c(e[f]))for(o in r)r.hasOwnProperty(o)&&(e[f][o]=r[o]);else if(i&&Array.isArray(e[f])&&Array.isArray(r))for(var p=0;p<r.length;p++)e[s[n]].push(r[p]);else e[f]=r;else e.hasOwnProperty(f)&&(c(e[f])||Array.isArray(e[f]))||(/^\d+$/.test(s[n+1])?e[f]=[]:e[f]={});e=e[f]}return e},i.prototype.transform=function(r,e,i){return e=e||{},i=i||{},Object.keys(r).forEach(function(t){this.set(r[t],this.pick(t,e),i)}.bind(this)),i},i.prototype.dot=function(r,e,i){return e=e||{},i=i||[],Object.keys(r).forEach(function(t){if(f(r[t])&&(c(r[t])&&!p(r[t])||Array.isArray(r[t])&&!this.keepArray&&0!==r[t].length))return this.dot(r[t],e,i.concat(t));e[i.concat(t).join(this.separator)]=r[t]}.bind(this)),e},i.pick=n("pick"),i.move=n("move"),i.transfer=n("transfer"),i.transform=n("transform"),i.copy=n("copy"),i.object=n("object"),i.str=n("str"),i.set=n("set"),i.del=i.remove=n("remove"),i.dot=n("dot"),["override","overwrite"].forEach(function(t){Object.defineProperty(i,t,{get:function(){return e.override},set:function(t){e.override=!!t}})}),["useArray","keepArray"].forEach(function(r){Object.defineProperty(i,r,{get:function(){return e[r]},set:function(t){e[r]=t}})}),i._process=s,"function"==typeof define&&define.amd?define(function(){return i}):"undefined"!=typeof module&&module.exports?module.exports=i:t.DotObject=i}(this);
|
package/gulpfile.js
CHANGED
|
@@ -34,7 +34,7 @@ gulp.task('watch', function () {
|
|
|
34
34
|
gulp.task('build-node', function () {
|
|
35
35
|
gulp.src('src/dot-object.js')
|
|
36
36
|
.pipe(hf.footer('\nmodule.exports = DotObject\n'))
|
|
37
|
-
.pipe(rename({basename: 'index'}))
|
|
37
|
+
.pipe(rename({ basename: 'index' }))
|
|
38
38
|
.pipe(gulp.dest('./'))
|
|
39
39
|
})
|
|
40
40
|
|
|
@@ -42,10 +42,10 @@ gulp.task('build-bower', function () {
|
|
|
42
42
|
gulp.src('src/dot-object.js')
|
|
43
43
|
.pipe(hf.header('src/header.tpl'))
|
|
44
44
|
.pipe(hf.footer('src/footer.tpl'))
|
|
45
|
-
.pipe(beautify({indentSize: 2}))
|
|
45
|
+
.pipe(beautify({ indentSize: 2 }))
|
|
46
46
|
.pipe(gulp.dest(DEST))
|
|
47
47
|
.pipe(uglify())
|
|
48
|
-
.pipe(rename({extname: '.min.js'}))
|
|
48
|
+
.pipe(rename({ extname: '.min.js' }))
|
|
49
49
|
.pipe(gulp.dest(DEST))
|
|
50
50
|
})
|
|
51
51
|
|
package/index.js
CHANGED
|
@@ -30,7 +30,7 @@ function parseKey (key, val) {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
function isIndex (k) {
|
|
33
|
-
return /^\d
|
|
33
|
+
return /^\d+$/.test(k)
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
function isObject (val) {
|
|
@@ -52,14 +52,14 @@ function parsePath (path, sep) {
|
|
|
52
52
|
return path.split(sep)
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
function DotObject (
|
|
55
|
+
function DotObject (separator, override, useArray) {
|
|
56
56
|
if (!(this instanceof DotObject)) {
|
|
57
|
-
return new DotObject(
|
|
57
|
+
return new DotObject(separator, override, useArray)
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
if (typeof override === 'undefined') override = false
|
|
61
61
|
if (typeof useArray === 'undefined') useArray = true
|
|
62
|
-
this.
|
|
62
|
+
this.separator = separator || '.'
|
|
63
63
|
this.override = override
|
|
64
64
|
this.useArray = useArray
|
|
65
65
|
this.keepArray = false
|
|
@@ -139,10 +139,10 @@ DotObject.prototype.object = function (obj, mods) {
|
|
|
139
139
|
Object.keys(obj).forEach(function (k) {
|
|
140
140
|
var mod = mods === undefined ? null : mods[k]
|
|
141
141
|
// normalize array notation.
|
|
142
|
-
var ok = parsePath(k, self.
|
|
142
|
+
var ok = parsePath(k, self.separator).join(self.separator)
|
|
143
143
|
|
|
144
|
-
if (ok.indexOf(self.
|
|
145
|
-
self._fill(ok.split(self.
|
|
144
|
+
if (ok.indexOf(self.separator) !== -1) {
|
|
145
|
+
self._fill(ok.split(self.separator), obj, obj[k], mod)
|
|
146
146
|
delete obj[k]
|
|
147
147
|
} else if (self.override) {
|
|
148
148
|
obj[k] = _process(obj[k], mod)
|
|
@@ -159,8 +159,8 @@ DotObject.prototype.object = function (obj, mods) {
|
|
|
159
159
|
* @param {Function|Array} mod optional modifier
|
|
160
160
|
*/
|
|
161
161
|
DotObject.prototype.str = function (path, v, obj, mod) {
|
|
162
|
-
if (path.indexOf(this.
|
|
163
|
-
this._fill(path.split(this.
|
|
162
|
+
if (path.indexOf(this.separator) !== -1) {
|
|
163
|
+
this._fill(path.split(this.separator), obj, v, mod)
|
|
164
164
|
} else if (!obj.hasOwnProperty(path) || this.override) {
|
|
165
165
|
obj[path] = _process(v, mod)
|
|
166
166
|
}
|
|
@@ -185,7 +185,7 @@ DotObject.prototype.pick = function (path, obj, remove) {
|
|
|
185
185
|
var key
|
|
186
186
|
var cp
|
|
187
187
|
|
|
188
|
-
keys = parsePath(path, this.
|
|
188
|
+
keys = parsePath(path, this.separator)
|
|
189
189
|
for (i = 0; i < keys.length; i++) {
|
|
190
190
|
key = parseKey(keys[i], obj)
|
|
191
191
|
if (obj && typeof obj === 'object' && key in obj) {
|
|
@@ -365,7 +365,7 @@ DotObject.prototype.set = function (path, val, obj, merge) {
|
|
|
365
365
|
if (typeof val === 'undefined') {
|
|
366
366
|
return obj
|
|
367
367
|
}
|
|
368
|
-
keys = parsePath(path, this.
|
|
368
|
+
keys = parsePath(path, this.separator)
|
|
369
369
|
|
|
370
370
|
for (i = 0; i < keys.length; i++) {
|
|
371
371
|
key = keys[i]
|
|
@@ -462,10 +462,10 @@ DotObject.prototype.dot = function (obj, tgt, path) {
|
|
|
462
462
|
(Array.isArray(obj[key]) && (!this.keepArray && (obj[key].length !== 0)))
|
|
463
463
|
)
|
|
464
464
|
)
|
|
465
|
-
|
|
465
|
+
) {
|
|
466
466
|
return this.dot(obj[key], tgt, path.concat(key))
|
|
467
467
|
} else {
|
|
468
|
-
tgt[path.concat(key).join(this.
|
|
468
|
+
tgt[path.concat(key).join(this.separator)] = obj[key]
|
|
469
469
|
}
|
|
470
470
|
}.bind(this))
|
|
471
471
|
return tgt
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dot-object",
|
|
3
3
|
"description": "dot-object makes it possible to transform and read (JSON) objects using dot notation.",
|
|
4
|
-
"version": "1.7.
|
|
4
|
+
"version": "1.7.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Rob Halff",
|
|
7
7
|
"email": "rob.halff@gmail.com"
|
|
@@ -32,13 +32,13 @@
|
|
|
32
32
|
"gulp": "^3.9.1",
|
|
33
33
|
"gulp-beautify": "^2.0.1",
|
|
34
34
|
"gulp-headerfooter": "^1.0.3",
|
|
35
|
-
"gulp-mocha": "^
|
|
36
|
-
"gulp-rename": "^1.
|
|
37
|
-
"gulp-standard": "^
|
|
38
|
-
"gulp-uglify": "^3.0.
|
|
35
|
+
"gulp-mocha": "^6.0.0",
|
|
36
|
+
"gulp-rename": "^1.4.0",
|
|
37
|
+
"gulp-standard": "^12.0.0",
|
|
38
|
+
"gulp-uglify": "^3.0.1",
|
|
39
39
|
"gulp-util": "^3.0.8",
|
|
40
|
-
"mocha": "
|
|
41
|
-
"should": "
|
|
40
|
+
"mocha": "5.x.x",
|
|
41
|
+
"should": "13.x.x",
|
|
42
42
|
"underscore.string": "latest"
|
|
43
43
|
},
|
|
44
44
|
"keywords": [
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"dot"
|
|
50
50
|
],
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"commander": "^2.
|
|
53
|
-
"glob": "^7.1.
|
|
52
|
+
"commander": "^2.19.0",
|
|
53
|
+
"glob": "^7.1.3"
|
|
54
54
|
}
|
|
55
55
|
}
|
package/src/dot-object.js
CHANGED
|
@@ -30,7 +30,7 @@ function parseKey (key, val) {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
function isIndex (k) {
|
|
33
|
-
return /^\d
|
|
33
|
+
return /^\d+$/.test(k)
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
function isObject (val) {
|
|
@@ -52,14 +52,14 @@ function parsePath (path, sep) {
|
|
|
52
52
|
return path.split(sep)
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
function DotObject (
|
|
55
|
+
function DotObject (separator, override, useArray) {
|
|
56
56
|
if (!(this instanceof DotObject)) {
|
|
57
|
-
return new DotObject(
|
|
57
|
+
return new DotObject(separator, override, useArray)
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
if (typeof override === 'undefined') override = false
|
|
61
61
|
if (typeof useArray === 'undefined') useArray = true
|
|
62
|
-
this.
|
|
62
|
+
this.separator = separator || '.'
|
|
63
63
|
this.override = override
|
|
64
64
|
this.useArray = useArray
|
|
65
65
|
this.keepArray = false
|
|
@@ -139,10 +139,10 @@ DotObject.prototype.object = function (obj, mods) {
|
|
|
139
139
|
Object.keys(obj).forEach(function (k) {
|
|
140
140
|
var mod = mods === undefined ? null : mods[k]
|
|
141
141
|
// normalize array notation.
|
|
142
|
-
var ok = parsePath(k, self.
|
|
142
|
+
var ok = parsePath(k, self.separator).join(self.separator)
|
|
143
143
|
|
|
144
|
-
if (ok.indexOf(self.
|
|
145
|
-
self._fill(ok.split(self.
|
|
144
|
+
if (ok.indexOf(self.separator) !== -1) {
|
|
145
|
+
self._fill(ok.split(self.separator), obj, obj[k], mod)
|
|
146
146
|
delete obj[k]
|
|
147
147
|
} else if (self.override) {
|
|
148
148
|
obj[k] = _process(obj[k], mod)
|
|
@@ -159,8 +159,8 @@ DotObject.prototype.object = function (obj, mods) {
|
|
|
159
159
|
* @param {Function|Array} mod optional modifier
|
|
160
160
|
*/
|
|
161
161
|
DotObject.prototype.str = function (path, v, obj, mod) {
|
|
162
|
-
if (path.indexOf(this.
|
|
163
|
-
this._fill(path.split(this.
|
|
162
|
+
if (path.indexOf(this.separator) !== -1) {
|
|
163
|
+
this._fill(path.split(this.separator), obj, v, mod)
|
|
164
164
|
} else if (!obj.hasOwnProperty(path) || this.override) {
|
|
165
165
|
obj[path] = _process(v, mod)
|
|
166
166
|
}
|
|
@@ -185,7 +185,7 @@ DotObject.prototype.pick = function (path, obj, remove) {
|
|
|
185
185
|
var key
|
|
186
186
|
var cp
|
|
187
187
|
|
|
188
|
-
keys = parsePath(path, this.
|
|
188
|
+
keys = parsePath(path, this.separator)
|
|
189
189
|
for (i = 0; i < keys.length; i++) {
|
|
190
190
|
key = parseKey(keys[i], obj)
|
|
191
191
|
if (obj && typeof obj === 'object' && key in obj) {
|
|
@@ -365,7 +365,7 @@ DotObject.prototype.set = function (path, val, obj, merge) {
|
|
|
365
365
|
if (typeof val === 'undefined') {
|
|
366
366
|
return obj
|
|
367
367
|
}
|
|
368
|
-
keys = parsePath(path, this.
|
|
368
|
+
keys = parsePath(path, this.separator)
|
|
369
369
|
|
|
370
370
|
for (i = 0; i < keys.length; i++) {
|
|
371
371
|
key = keys[i]
|
|
@@ -462,10 +462,10 @@ DotObject.prototype.dot = function (obj, tgt, path) {
|
|
|
462
462
|
(Array.isArray(obj[key]) && (!this.keepArray && (obj[key].length !== 0)))
|
|
463
463
|
)
|
|
464
464
|
)
|
|
465
|
-
|
|
465
|
+
) {
|
|
466
466
|
return this.dot(obj[key], tgt, path.concat(key))
|
|
467
467
|
} else {
|
|
468
|
-
tgt[path.concat(key).join(this.
|
|
468
|
+
tgt[path.concat(key).join(this.separator)] = obj[key]
|
|
469
469
|
}
|
|
470
470
|
}.bind(this))
|
|
471
471
|
return tgt
|
package/test/array_notation.js
CHANGED
|
@@ -66,8 +66,8 @@ describe('Dotted Array notation', function () {
|
|
|
66
66
|
it('multiple indexes', function () {
|
|
67
67
|
var src = {
|
|
68
68
|
I: [
|
|
69
|
-
{am: [{nes: ['ted']}]},
|
|
70
|
-
{me: 'too'}
|
|
69
|
+
{ am: [{ nes: ['ted'] }] },
|
|
70
|
+
{ me: 'too' }
|
|
71
71
|
]
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -82,17 +82,17 @@ describe('Dotted Array notation', function () {
|
|
|
82
82
|
|
|
83
83
|
describe('can set', function () {
|
|
84
84
|
it('index at target', function () {
|
|
85
|
-
var obj = {path: []}
|
|
85
|
+
var obj = { path: [] }
|
|
86
86
|
|
|
87
87
|
Dot.set(v('path.0'), 'test', obj)
|
|
88
88
|
Dot.set(v('path.1'), 'test2', obj)
|
|
89
89
|
|
|
90
90
|
obj.path.should.be.instanceOf(Array)
|
|
91
|
-
obj.should.eql({path: ['test', 'test2']})
|
|
91
|
+
obj.should.eql({ path: ['test', 'test2'] })
|
|
92
92
|
})
|
|
93
93
|
|
|
94
94
|
it('index and set undefined for empty indices', function () {
|
|
95
|
-
var obj = {path: []}
|
|
95
|
+
var obj = { path: [] }
|
|
96
96
|
|
|
97
97
|
Dot.set(v('path.0'), 'test', obj)
|
|
98
98
|
Dot.set(v('path.2'), 'test2', obj)
|
|
@@ -102,27 +102,27 @@ describe('Dotted Array notation', function () {
|
|
|
102
102
|
// array will have an undefined index.
|
|
103
103
|
JSON.stringify(obj)
|
|
104
104
|
.should.eql(
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
JSON.stringify({ path: ['test', undefined, 'test2'] })
|
|
106
|
+
)
|
|
107
107
|
|
|
108
108
|
// to json will converted it to null
|
|
109
109
|
JSON.stringify(obj).should.eql('{"path":["test",null,"test2"]}')
|
|
110
110
|
})
|
|
111
111
|
|
|
112
112
|
it('index and overwrite existing values', function () {
|
|
113
|
-
var obj = {path: ['still', 'shall', 'be', 'gone', 'here']}
|
|
113
|
+
var obj = { path: ['still', 'shall', 'be', 'gone', 'here'] }
|
|
114
114
|
|
|
115
115
|
Dot.set(v('path.1'), 'x', obj)
|
|
116
116
|
Dot.set(v('path.2'), 'xx', obj)
|
|
117
117
|
Dot.set(v('path.3'), 'xxx', obj)
|
|
118
118
|
|
|
119
|
-
obj.should.eql({path: ['still', 'x', 'xx', 'xxx', 'here']})
|
|
119
|
+
obj.should.eql({ path: ['still', 'x', 'xx', 'xxx', 'here'] })
|
|
120
120
|
})
|
|
121
121
|
})
|
|
122
122
|
|
|
123
123
|
describe('can remove', function () {
|
|
124
124
|
it('indexes one by one leaving traces', function () {
|
|
125
|
-
var obj = {path: ['still', 'shall', 'really', 'be', 'gone', 'here']}
|
|
125
|
+
var obj = { path: ['still', 'shall', 'really', 'be', 'gone', 'here'] }
|
|
126
126
|
|
|
127
127
|
Dot.remove(v('path.1'), obj)
|
|
128
128
|
Dot.remove(v('path.2'), obj)
|
|
@@ -132,12 +132,12 @@ describe('Dotted Array notation', function () {
|
|
|
132
132
|
// array will have an undefined index.
|
|
133
133
|
JSON.stringify(obj)
|
|
134
134
|
.should.eql(
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
135
|
+
JSON.stringify({
|
|
136
|
+
path: [
|
|
137
|
+
'still', undefined, undefined, undefined, undefined, 'here'
|
|
138
|
+
]
|
|
139
|
+
})
|
|
140
|
+
)
|
|
141
141
|
|
|
142
142
|
// to json will converted it to null
|
|
143
143
|
JSON.stringify(obj).should.eql(
|
|
@@ -146,7 +146,7 @@ describe('Dotted Array notation', function () {
|
|
|
146
146
|
})
|
|
147
147
|
|
|
148
148
|
it('array of indexes leaving no traces', function () {
|
|
149
|
-
var obj = {path: ['still', 'shall', 'really', 'be', 'gone', 'here']}
|
|
149
|
+
var obj = { path: ['still', 'shall', 'really', 'be', 'gone', 'here'] }
|
|
150
150
|
|
|
151
151
|
Dot.remove([
|
|
152
152
|
v('path.1'),
|
package/test/dot-json.js
CHANGED
|
@@ -55,6 +55,28 @@ describe('Object test:', function () {
|
|
|
55
55
|
})
|
|
56
56
|
})
|
|
57
57
|
|
|
58
|
+
it('Should allow keys with numbers', function () {
|
|
59
|
+
var row = {
|
|
60
|
+
'id': 2,
|
|
61
|
+
'0A': 'a',
|
|
62
|
+
'0A9': 'b',
|
|
63
|
+
'0B.1AB.A34C9': 'c'
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
Dot.object(row)
|
|
67
|
+
|
|
68
|
+
row.should.eql({
|
|
69
|
+
'id': 2,
|
|
70
|
+
'0A': 'a',
|
|
71
|
+
'0A9': 'b',
|
|
72
|
+
'0B': {
|
|
73
|
+
'1AB': {
|
|
74
|
+
'A34C9': 'c'
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
})
|
|
78
|
+
})
|
|
79
|
+
|
|
58
80
|
it('Should expand dotted string', function () {
|
|
59
81
|
var tgt = {}
|
|
60
82
|
|
|
@@ -130,39 +152,39 @@ describe('Object test:', function () {
|
|
|
130
152
|
|
|
131
153
|
Dot.object(row, mods)
|
|
132
154
|
|
|
133
|
-
row.should.eql({'page': {'title': 'My Page', 'slug': 'my-page'}})
|
|
155
|
+
row.should.eql({ 'page': { 'title': 'My Page', 'slug': 'my-page' } })
|
|
134
156
|
})
|
|
135
157
|
|
|
136
158
|
it('should not process non dot value with modifier when override is false',
|
|
137
159
|
function () {
|
|
138
|
-
var row = {'title': 'my page', 'slug': 'My Page'}
|
|
160
|
+
var row = { 'title': 'my page', 'slug': 'My Page' }
|
|
139
161
|
|
|
140
|
-
var mods = {'title': _s.titleize, 'slug': _s.slugify}
|
|
162
|
+
var mods = { 'title': _s.titleize, 'slug': _s.slugify }
|
|
141
163
|
|
|
142
164
|
Dot.object(row, mods)
|
|
143
165
|
|
|
144
|
-
row.should.eql({'title': 'my page', 'slug': 'My Page'})
|
|
166
|
+
row.should.eql({ 'title': 'my page', 'slug': 'My Page' })
|
|
145
167
|
}
|
|
146
168
|
)
|
|
147
169
|
|
|
148
170
|
it('Dot.object should process multiple modifiers', function () {
|
|
149
|
-
var row = {'page.name': ' My Page '}
|
|
171
|
+
var row = { 'page.name': ' My Page ' }
|
|
150
172
|
|
|
151
|
-
var mods = {'page.name': [_s.trim, _s.underscored]}
|
|
173
|
+
var mods = { 'page.name': [_s.trim, _s.underscored] }
|
|
152
174
|
|
|
153
175
|
Dot.object(row, mods)
|
|
154
176
|
|
|
155
|
-
row.should.eql({'page': {'name': 'my_page'}})
|
|
177
|
+
row.should.eql({ 'page': { 'name': 'my_page' } })
|
|
156
178
|
})
|
|
157
179
|
|
|
158
|
-
it('Dot.object should work with a different
|
|
159
|
-
var row = {'page=>name': ' My Page '}
|
|
180
|
+
it('Dot.object should work with a different separator', function () {
|
|
181
|
+
var row = { 'page=>name': ' My Page ' }
|
|
160
182
|
|
|
161
|
-
var mods = {'page=>name': [_s.trim, _s.underscored]}
|
|
183
|
+
var mods = { 'page=>name': [_s.trim, _s.underscored] }
|
|
162
184
|
|
|
163
185
|
var dot = new Dot('=>', false)
|
|
164
186
|
dot.object(row, mods)
|
|
165
187
|
|
|
166
|
-
row.should.eql({'page': {'name': 'my_page'}})
|
|
188
|
+
row.should.eql({ 'page': { 'name': 'my_page' } })
|
|
167
189
|
})
|
|
168
190
|
})
|
package/test/move.js
CHANGED
|
@@ -15,8 +15,8 @@ describe('Move test:', function () {
|
|
|
15
15
|
|
|
16
16
|
var expected = {
|
|
17
17
|
id: '527423a65e380f0000588e47',
|
|
18
|
-
source: {id: '526dd5c6b4c4aa8770000001', port: 'github'},
|
|
19
|
-
target: {id: '527402d6b15d1800008755cf', port: 'in'}
|
|
18
|
+
source: { id: '526dd5c6b4c4aa8770000001', port: 'github' },
|
|
19
|
+
target: { id: '527402d6b15d1800008755cf', port: 'in' }
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
Dot.move('source', 'source.id', link)
|
|
@@ -36,8 +36,8 @@ describe('Move test:', function () {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
var expected = {
|
|
39
|
-
source: {id: '526dd5c6b4c4aa8770000001'},
|
|
40
|
-
target: {port: 'in'},
|
|
39
|
+
source: { id: '526dd5c6b4c4aa8770000001' },
|
|
40
|
+
target: { port: 'in' },
|
|
41
41
|
out: 'github'
|
|
42
42
|
}
|
|
43
43
|
|
|
@@ -56,8 +56,8 @@ describe('Move test:', function () {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
var expected = {
|
|
59
|
-
source: {id: 'ONE'},
|
|
60
|
-
target: {port: 'TWO'}
|
|
59
|
+
source: { id: 'ONE' },
|
|
60
|
+
target: { port: 'TWO' }
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
function up (val) { return val.toUpperCase() }
|
package/test/override.js
CHANGED
|
@@ -17,7 +17,7 @@ describe('Override test:', function () {
|
|
|
17
17
|
|
|
18
18
|
obj.should.eql({
|
|
19
19
|
'some': 'value',
|
|
20
|
-
'already': {'new': 'value'}
|
|
20
|
+
'already': { 'new': 'value' }
|
|
21
21
|
})
|
|
22
22
|
})
|
|
23
23
|
|
|
@@ -34,7 +34,7 @@ describe('Override test:', function () {
|
|
|
34
34
|
|
|
35
35
|
obj.should.eql({
|
|
36
36
|
'some': 'new_value',
|
|
37
|
-
'already': {'new': 'value'}
|
|
37
|
+
'already': { 'new': 'value' }
|
|
38
38
|
})
|
|
39
39
|
})
|
|
40
40
|
|
|
@@ -52,7 +52,7 @@ describe('Override test:', function () {
|
|
|
52
52
|
|
|
53
53
|
Dot.override = true
|
|
54
54
|
|
|
55
|
-
Dot.str('sample.dotted.bar', {baz: 'boom'}, obj)
|
|
55
|
+
Dot.str('sample.dotted.bar', { baz: 'boom' }, obj)
|
|
56
56
|
|
|
57
57
|
Dot.override = false
|
|
58
58
|
|
package/test/transfer.js
CHANGED
|
@@ -19,7 +19,7 @@ describe('Transfer:', function () {
|
|
|
19
19
|
name: 'Brandon'
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
var srcExpected = {name: 'John', stuff: {}}
|
|
22
|
+
var srcExpected = { name: 'John', stuff: {} }
|
|
23
23
|
|
|
24
24
|
var tgtExpected = {
|
|
25
25
|
name: 'Brandon',
|
|
@@ -59,7 +59,7 @@ describe('Transfer:', function () {
|
|
|
59
59
|
name: 'Brandon'
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
var srcExpected = {name: 'John', stuff: {}}
|
|
62
|
+
var srcExpected = { name: 'John', stuff: {} }
|
|
63
63
|
|
|
64
64
|
var tgtExpected = {
|
|
65
65
|
name: 'Brandon',
|