expand-object
Expand a string into a JavaScript object using a simple notation. Use the CLI or as a node.js lib.
I created this to make it easier to generate objects for unit tests. I'd love to hear about other use cases!
Examples
expand('a')
expand('a.b')
expand('a|b')
expand('a:b')
expand('a,b')
Type casting
Introduced in v0.2.2, some values are cast to their JavaScript type.
Booleans
If the value is "true"
or "false"
it will be coerced to a boolean value.
expand('a:true')
expand('a:false')
Numbers
If the value is an integer it will be coerced to a number.
expand('a:1')
expand('a:123')
Regex
If the value is a simple regular expression it will be coerced to a new RegExp()
.
expand('a:/foo/')
expand('a.b.c:/^bar/gmi')
Install
Install with npm
$ npm i expand-object --save
CLI
Usage with cli:
❯ expand-object --help
Usage: expand-object [options] <string>
Expand a string into a JavaScript object using a simple notation.
Options:
-h, --help output usage information
-V, --version output the version number
-r, --raw Output as raw javascript object - not stringified
Examples:
$ expand-object "a:b"
$ expand-object --raw "a:b"
$ echo "a:b" | expand-object
node.js
To use as a node.js library:
var expand = require('expand-object');
dots
Expand dots into child objects:
expand('a')
expand('a.b')
expand('a.b.c')
expand('a.b.c.d')
pipes
Expand pipes into sibling objects:
expand('a|b')
expand('a|b|c')
expand('a|b|c|d')
colons
Expand colons into key-value pairs:
expand('a:b')
expand('a.b:c')
expand('a.b.c:d')
commas
Expand comma separated values into arrays:
expand('a,b')
expand('a,b,c')
expand('a:b,c,d|e:f,g,h')
Usage examples
Expand siblings with comma separated values into arrays:
expand('a:b,c,d|e:f,g,h')
Expand children with comma separated values into arrays:
expand('a.b.c:d,e,f|g.h:i,j,k')
Expand sibling objects into key-value pairs:
expand('a:b|c:d')
expand('a:b|c:d|e:f')
expand('a:b|c:d|e:f|g:h')
Expand child objects into key-value pairs:
expand('a.b:c')
expand('a.b.c:d')
expand('a.b.c.d:e')
Expand sibling and child objects into key-value pairs:
expand('a:b|c:d')
expand('a.b.c|d.e:f')
expand('a.b:c|d.e:f')
expand('a.b.c:d|e.f.g:h')
Related projects
- get-value: Use property paths (
a.b.c
) to get a nested value from an object. - has-value: Returns true if a value exists, false if empty. Works with deeply nested values using… more
- stringify-keys: Build an array of key paths from an object.
- set-value: Create nested values and any intermediaries using dot notation (
'a.b.c'
) paths.
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.