Skip to content

Commit

Permalink
Merge pull request #2 from Yeti-or/yeti-or.create-array
Browse files Browse the repository at this point in the history
Add createObjFromObj
  • Loading branch information
Yeti-or committed Oct 25, 2016
2 parents c4b9bad + 1a52deb commit 3569a82
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 1 deletion.
1 change: 1 addition & 0 deletions .jshintrc
Expand Up @@ -13,6 +13,7 @@
"unused": true,

"node": true,
"esversion": 6,

"expr": true,
"sub": true
Expand Down
1 change: 1 addition & 0 deletions index.js
Expand Up @@ -7,6 +7,7 @@ module.exports.removeElementFromArray = array.removeElementFromArray;

// Object helpers
module.exports.createObject = object.createObject;
module.exports.createObjectFromObject = object.createObjectFromObject;
module.exports.removePropertyFromObject = object.removePropertyFromObject;
module.exports.removePropertyFromObjectByKeyName = object.removePropertyFromObjectByKeyName;
module.exports.getKeysFromObject = object.getKeysFromObject;
Expand Down
8 changes: 8 additions & 0 deletions lib/object.js
Expand Up @@ -74,6 +74,13 @@ function createObject(map, opts) {
return new types.ObjectExpression(arr);
}

function createObjectFromObject(obj, opts) {
var map = obj.properties.reduce((map, cur) => {
return map.set(cur.key.value || cur.key.name, cur.value.cloneElement());
}, new Map());
return createObject(map, opts || {});
}

function keyVal(propKey) {
return propKey.name || propKey.value;
}
Expand Down Expand Up @@ -218,6 +225,7 @@ function removePropertyFromObjectByKeyName(obj, keyName) {
module.exports.removePropertyFromObject = removePropertyFromObject;
module.exports.removePropertyFromObjectByKeyName = removePropertyFromObjectByKeyName;
module.exports.createObject = createObject;
module.exports.createObjectFromObject = createObjectFromObject;
module.exports.getKeysFromObject = getKeysFromObject;
module.exports.getValueFromObject = getValueFromObject;
module.exports.getValuesFromObject = getValuesFromObject;
Expand Down
24 changes: 23 additions & 1 deletion tests/object.js
Expand Up @@ -28,7 +28,7 @@ describe('Object:', () => {
expect(() => helpers.createObject(one)).to.throw(Error);
});

it('should create simple object object', () => {
it('should create simple object', () => {
var one = new types.NumericLiteral([Token.create('Numeric', 1)]);
var map = new Map();
map.set(1, one);
Expand Down Expand Up @@ -88,6 +88,28 @@ describe('Object:', () => {
.to.eql('{1: 1, 2: x, three: \'@@@\', 4: false}');
});

describe('from another', () => {
it('should create object from another object', () => {
var one = new types.NumericLiteral([Token.create('Numeric', 1)]);
var map = new Map();
map.set(1, one);
var obj = helpers.createObject(map);
var obj2 = helpers.createObjectFromObject(obj);

expect(obj2.getSourceCode()).to.eql('{1: 1}');
});

it('should create object from another object with opts', () => {
var one = new types.NumericLiteral([Token.create('Numeric', 1)]);
var map = new Map();
map.set(1, one);
var obj = helpers.createObject(map);
var obj2 = helpers.createObjectFromObject(obj, {paddingNewLinesInObjects: true});

expect(obj2.getSourceCode()).to.eql('{\n1: 1\n}');
});
});

describe('opts', () => {
beforeEach(() => {
this.createObj = (opts) => {
Expand Down

0 comments on commit 3569a82

Please sign in to comment.