collapse-array
Advanced tools
Comparing version 1.0.1 to 2.0.0
34
index.js
@@ -1,31 +0,9 @@ | ||
var collapse = function(array) { | ||
for (var i = 0, l = array.length; i < l; i++) { | ||
if (array[i] instanceof Array) { | ||
array[i] = collapse(array[i]) | ||
} | ||
} | ||
return (l > 1 ? array : | ||
l === 1 ? array[0] : | ||
module.exports = function (array) { | ||
var length = array.length | ||
return ( | ||
length > 1 ? array : | ||
length === 1 ? array[0] : | ||
null | ||
) | ||
} | ||
module.exports = function collapser(object) { | ||
if (object instanceof Array) { | ||
return collapse(object) | ||
} | ||
else if (object instanceof Object) { | ||
for (var item in object) { | ||
if (object[item] instanceof Array) { | ||
object[item] = collapse(object[item]) | ||
} | ||
else if (object[item] instanceof Object) { | ||
object[item] = collapser(object[item]) | ||
} | ||
} | ||
return object | ||
} | ||
return object | ||
} |
{ | ||
"name": "collapse-array", | ||
"version": "1.0.1", | ||
"version": "2.0.0", | ||
"description": "A simple utility for collapsing single-element arrays.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -16,2 +16,4 @@ # collapse-array | ||
var collapse = require('collapse-array') | ||
var collapseDeep = require('collapse-array/deep') | ||
var collapseObj = require('collapse-array/object') | ||
@@ -21,12 +23,12 @@ collapse([4]) | ||
collapse([[[[2],[3]]]]) | ||
// => [2, 3] | ||
collapse([1, 2, 3]) | ||
// => [1, 2, 3] | ||
collapse({ | ||
collapseDeep([[[[2],[3]]]]) | ||
// => [2, 3] | ||
collapseObj({ | ||
a: 123, | ||
b: [['one'], ['two', 'three'], ['four']], | ||
c: function() { | ||
c: function () { | ||
return 'hello' | ||
@@ -39,3 +41,3 @@ } | ||
b: ['one', ['two', 'three'], 'four'], | ||
c: function() { | ||
c: function () { | ||
return 'hello' | ||
@@ -42,0 +44,0 @@ } |
@@ -1,19 +0,32 @@ | ||
var run = require('tape').test | ||
var run = require('tape') | ||
var JSON = require('json3') | ||
var collapse = require('../') | ||
var collapseDeep = require('../deep') | ||
var collapseObject = require('../object') | ||
run('Array', function(test) { | ||
run('Basic', function (test) { | ||
var a = [1, 2, 3] | ||
var b = [4] | ||
var c = [[[[2],[3]]]] | ||
var d = [] | ||
var c = [] | ||
test.equal(collapse(a), a) | ||
test.equal(collapse(b), b[0]) | ||
test.deepEqual(collapse(c), [2, 3]) | ||
test.equal(collapse(d), null) | ||
test.equal(collapse(c), null) | ||
test.end() | ||
}) | ||
run('Object', function(test) { | ||
run('Deep', function (test) { | ||
var a = [1, 2, 3] | ||
var b = [4] | ||
var c = [[[[2],[3]]]] | ||
var d = [] | ||
test.equal(collapseDeep(a), a) | ||
test.equal(collapseDeep(b), b[0]) | ||
test.deepEqual(collapseDeep(c), [2, 3]) | ||
test.equal(collapseDeep(d), null) | ||
test.end() | ||
}) | ||
run('Object', function (test) { | ||
var source = { | ||
@@ -23,3 +36,3 @@ a: [1, 2, 3], | ||
c: ['foo'], | ||
d: function() { | ||
d: function () { | ||
return 'hello' | ||
@@ -35,3 +48,3 @@ }, | ||
c: 'foo', | ||
d: function() { | ||
d: function () { | ||
return 'hello' | ||
@@ -44,3 +57,3 @@ }, | ||
test.equal( | ||
JSON.stringify(collapse(source)), | ||
JSON.stringify(collapseObject(source)), | ||
JSON.stringify(expected) | ||
@@ -50,43 +63,1 @@ ) | ||
}) | ||
run('Deep Object', function(test) { | ||
var source = { | ||
a: [1, 2, 3], | ||
b: [4], | ||
c: ['foo'], | ||
d: function() { | ||
return 'hello' | ||
}, | ||
e: ['bar', ['baz']] | ||
} | ||
var f = {} | ||
for (var key in source) { | ||
f[key] = source[key] | ||
} | ||
source.f = f | ||
var expected = { | ||
a: [1, 2, 3], | ||
b: 4, | ||
c: 'foo', | ||
d: function() { | ||
return 'hello' | ||
}, | ||
e: ['bar', 'baz'] | ||
} | ||
var f = {} | ||
for (var key in expected) { | ||
f[key] = expected[key] | ||
} | ||
expected.f = f | ||
test.equal( | ||
JSON.stringify(collapse(source)), | ||
JSON.stringify(expected) | ||
) | ||
test.end() | ||
}) |
4060
8
48
87