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 with npm
$ npm i collapse-object --save
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({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({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'}]}}
Install dev dependencies:
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue
Jon Schlinkert
Copyright © 2015 Jon Schlinkert Released under the MIT license.
This file was generated by verb-cli on August 05, 2015.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4