Home

Awesome

collapse-object NPM version

Collapse an object into a string using the syntax from expand-object. This syntax is pretty handy for setting command line arguments, for expanding/collapsing test fixtures, etc.

Also see expand-object, for doing the reverse of this library.

Install

Install with npm

$ npm i collapse-object --save

Usage

var collapse = require('collapse-object');

collapse({a: {b: {c: [1, 2, 3]}}})
//=> 'a.b.c:1,2,3'

Re-expand a collapsed string with expand-object:

var expand = require('expand-object');
//=> {a: {b: {c: [1, 2, 3]}}}

collapse an object

collapse({a: 'b'})
//=> 'a:b'

expand('a:b')
//=> {a: 'b'}

collapse objects with number values

collapse({a: 0})
//=> 'a:0'
collapse({a: 1})
//=> 'a:1'

expand('a:0')
//=> {a: 0}
expand('a:1')
//=> {a: 1}

collapse objects with boolean values

collapse({a: false})
//=> 'a:false'
collapse({a: true})
//=> 'a:true'

expand('a:false')
//=> {a: false}
expand('a:true')
//=> {a: true}

collapse array with boolean values

collapse({a: [1, 2, 3]})
//=> 'a:1,2,3'
collapse({a: {b: [1, 2, 3]}, c: 'd'})
//=> 'a.b:1,2,3|c:d'

expand('a:1,2,3')
//=> {a: [1, 2, 3]}
expand('a.b:1,2,3|c:d')
//=> {a: {b: [1, 2, 3]}, c: 'd'}

collapse nested objects with boolean values

collapse({a: {b: true}})
//=> 'a.b:true'
collapse({a: {b: [true]}})
//=> 'a.b:true,'
collapse({a: {b: [true, false]}})
//=> 'a.b:true,false'
collapse({a: {b: [true, false], c: {d: 'e'}}})
//=> 'a.b:true,false|a.c.d:e'

expand('a.b:true')
//=> {a: {b: true}}
expand('a.b:true')
//=> {a: {b: true}}
expand('a.b:true,')
//=> {a: {b: [true]}}
expand('a.b:true,false')
//=> {a: {b: [true, false]}}
expand('a.b:true,false|a.c.d:e')
//=> {a: {b: [true, false], c: {d: 'e'}}}

collapse complex objects

collapse({a: {b: 'c', d: 'e'}, f: 'g'})
//=> 'a.b:c|a.d:e|f:g'
collapse({a: 'b', c: 'd', e: {f: 'g', h: 'i', j: {k: {l: 'm'}}}})
//=> 'a:b|c:d|e.f:g|e.h:i|e.j.k.l:m'
collapse({a: 'b', c: 'd', e: {f: 'g', h: ['i', 'j', 'k']}})
//=> 'a:b|c:d|e.f:g|e.h:i,j,k'
collapse({a: 'b', c: 'd', e: {f: 'g', h: ['i', 'j', 'k', {one: 'two'}]}})
//=> 'a:b|c:d|e.f:g|e.h:i,j,k,one:two'

expand('a.b:c|a.d:e|f:g')
//=> {a: {b: 'c', d: 'e'}, f: 'g'}
expand('a:b|c:d|e.f:g|e.h:i|e.j.k.l:m')
//=> {a: 'b', c: 'd', e: {f: 'g', h: 'i', j: {k: {l: 'm'}}}}
expand('a:b|c:d|e.f:g|e.h:i,j,k')
//=> {a: 'b', c: 'd', e: {f: 'g', h: ['i', 'j', 'k']}}
expand('a:b|c:d|e.f:g|e.h:i,j,k,one:two')
//=> {a: 'b', c: 'd', e: {f: 'g', h: ['i', 'j', 'k', {one: 'two'}]}}

Related projects

Running tests

Install dev dependencies:

$ npm i -d && npm test

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue

Author

Jon Schlinkert

License

Copyright © 2015 Jon Schlinkert Released under the MIT license.


This file was generated by verb-cli on August 05, 2015.