dotject
v0.6.6
Published
Dot notation to object. Supports nesting and same level objects as well as (multiple) value assignment and value overriding.
Downloads
10
Maintainers
Readme
dotject
Dot notation to object. Shortcode your object creation and value assignments to nested objects.
Supports nesting and same level objects, as well as (multiple) value assignment and value overriding of existing objects.
dotject composition is also available as an atom package.
Getting started
Using npm
npm install dotject --save
var dotject = require("dotject");
Examples
Create an object
Simple nested properties
Separating property names with dots (like JavaScript dot notation) will create nested objects:
dotject("a.b.c");
{
"a": {
"b": {
"c": {}
}
}
}
Properties at the same level
Separating property names with a comma (similar to JavaScript objects) will create properties at the same level:
dotject("a,b");
{
"a": {},
"b": {}
}
This notation can be combined with the dot style notation:
dotject("a,b.c");
{
"a": {},
"b": {
"c": {}
}
}
Extend an existing object
Extend an existing object with new properties by passing the existing object as a second (optional) argument:
dotject("b.c", {"a":{}});
{
"a": {},
"b": {
"c": {}
}
}
Existing object values are retained:
dotject("b.c", {"a": true});
{
"a": true,
"b": {
"c": {}
}
}
Existing nested object properties are retained:
dotject("a.c", {"a":{"b":{}}});
{
"a": {
"b": {},
"c": {}
}
}
Assign a value
You can assign a value to the last nested property:
dotject("a.b", {}, 10);
{
"a": {
"b": 10
}
}
Assign multiple values
You can assign a values to the last nested properties:
dotject("a,b.c,d", {}, true, 10, "test");
{
"a": true,
"b": {
"c": 10
},
"d": "test"
}
Assign multiple values and override existing
You can assign a values to the last nested properties:
dotject("a,b", {"a": false}, true, "test")
{
"a": true,
"b": "test"
}
"Real world" example
var camera = {isEnabled: true};
camera = dotject("settings.encoding.format,output.data.base64", camera, "JPEG", true);
{
"isEnabled": true,
"settings": {
"encoding": {
"format": "JPEG"
}
},
"output": {
"data": {
"base64": true
}
}
}