Skip to content

Commit

Permalink
Merge pull request #58 from KrisSiegel/4.1.0
Browse files Browse the repository at this point in the history
Fixed issue where arrays are not deep copied in msngr.copy()
  • Loading branch information
KrisSiegel committed May 20, 2016
2 parents 418445d + ea539f3 commit 00acb80
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 4 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# Changelog
This is a roll-up of all release notes in order of release

## [Release 4.0.2 - May 20, 2016](https://github.com/KrisSiegel/msngr.js/releases/tag/4.0.2)
Fixed an issue with ```msngr.copy()``` where values within arrays were not deep copied.

## [Release 4.0.1 - March 23, 2016](https://github.com/KrisSiegel/msngr.js/releases/tag/4.0.1)
This update brings an additional benchmark for mache and a bug fix where mache's ```getDeep()``` would fail to return false boolean values.

Expand Down
7 changes: 6 additions & 1 deletion msngr.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ var msngr = msngr || (function() {
return internal.objects.message(topic, category, subcategory);
};

external.version = "4.0.1";
external.version = "4.0.2";

var getType = function(input) {
return Object.prototype.toString.call(input);
Expand Down Expand Up @@ -157,6 +157,11 @@ var msngr = msngr || (function() {
var keyType = getType(obj[key]);
if (["[object Object]", "[object Function]"].indexOf(keyType) !== -1) {
result[key] = external.copy(obj[key]);
} else if ("[object Array]" === keyType) {
result[key] = [];
for (var i = 0; i < obj[key].length; ++i) {
result[key][i] = external.copy(obj[key][i]);
}
} else {
result[key] = obj[key];
}
Expand Down
2 changes: 1 addition & 1 deletion msngr.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "msngr",
"main": "msngr.js",
"description": "An asynchronous messaging library, written in JavaScript, for node and browser use",
"version": "4.0.1",
"version": "4.0.2",
"keywords": [
"message",
"messaging",
Expand Down
21 changes: 21 additions & 0 deletions src/main.aspec.js
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,27 @@ describe("./main.js", function() {
obj.stuff.goes.here.str = "whatever!";
expect(obj.stuff.goes.here.str).to.equal("whatever!");
expect(copy.stuff.goes.here.str).to.equal("some");

// Let's make sure arrays are deep copied
var tobj = {
something: [
{ yes: "no" },
{ totes: "magoats" }
]
};

var tobjCopy = msngr.copy(tobj);
tobj.something[0].yes = "askdhad";
tobjCopy.something.push({
another: "yup"
});

expect(tobjCopy).to.exist;
expect(tobjCopy.something).to.exist;
expect(tobj.something.length).to.equal(2);
expect(tobjCopy.something.length).to.equal(3);
expect(tobj.something[0].yes).to.equal("askdhad");
expect(tobjCopy.something[0].yes).to.equal("no");
});

it("msngr.debug - property setting exports internal object for testing and debugging", function() {
Expand Down
7 changes: 6 additions & 1 deletion src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ var msngr = msngr || (function() {
return internal.objects.message(topic, category, subcategory);
};

external.version = "4.0.1";
external.version = "4.0.2";

var getType = function(input) {
return Object.prototype.toString.call(input);
Expand Down Expand Up @@ -157,6 +157,11 @@ var msngr = msngr || (function() {
var keyType = getType(obj[key]);
if (["[object Object]", "[object Function]"].indexOf(keyType) !== -1) {
result[key] = external.copy(obj[key]);
} else if ("[object Array]" === keyType) {
result[key] = [];
for (var i = 0; i < obj[key].length; ++i) {
result[key][i] = external.copy(obj[key][i]);
}
} else {
result[key] = obj[key];
}
Expand Down

0 comments on commit 00acb80

Please sign in to comment.