dot-object 1.7.0 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of dot-object might be problematic. Click here for more details.
- 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',
|