ember-setp

0.0.2 • Public • Published

ember-setp

Build Status Dependency Status devDependency Status

It's like mkdir -p, but for Ember.Object.

Installation

$ ember install ember-setp

Usage

Just import and use like you would a regular Ember.set() call:

import setp from 'ember-setp';
 
let book = Ember.Object.create();
 
// setp will create the intermediate objects (in this case, the `author` object)
setp(book, 'author.firstName', 'Dave');
 
console.log(get(book, 'author'));  //  { firstName: 'Dave' }

setp() also handles arrays, and will create intermediate arrays for you as well:

import setp from 'ember-setp';
 
let book = Ember.Object.create();
 
// setp will create the intermediate objects (in this case, the `author` object)
setp(book, 'reviews.0.summary', 'It was a great book!');
 
console.log(get(book, 'reviews'));  //  [ { summary: 'It was a great book!' } ]

Implementation

setp() will step through each segment of the path you are trying to set (i.e. for 'book.author.firstName', it will step through book and author). If that segment doesn't exist (technically, is null or undefined), it will create an empty object at that intermediate path. If any segment is a number, it assumes it is an array index. If no array exists at that path, one will be created.

Caveats: there's two big caveats to using setp():

  • Your property names can't have . in them. That's proabably a really bad idea anyway. setp() will treat a property with . in it as a nested property.
  • You can't use numeric property names (i.e. just '3' as a property name). Another probably bad idea anyway, but setp() will confuse it for an array.

Readme

Keywords

Package Sidebar

Install

npm i ember-setp

Weekly Downloads

1

Version

0.0.2

License

MIT

Last publish

Collaborators

  • davewasmer