mirror of
https://github.com/BorysLevytskyi/BitwiseCmd.git
synced 2025-12-19 03:12:25 +01:00
Implemented ability to clone dependencies
This commit is contained in:
@@ -12,7 +12,7 @@ module.exports = function(config) {
|
||||
'src/js/app.js',
|
||||
'src/js/components/*.js',
|
||||
'src/js/app/**/*.js',
|
||||
'tests/*.js'
|
||||
'tests/**/*.js'
|
||||
]
|
||||
});
|
||||
};
|
||||
|
||||
@@ -4,24 +4,27 @@
|
||||
var is = core.is;
|
||||
|
||||
function Container(store) {
|
||||
this.store = {};
|
||||
this.store = store || {};
|
||||
this.resolutionStack = [];
|
||||
}
|
||||
|
||||
Container.prototype.register = function(name, def) {
|
||||
var reg = this.store[name];
|
||||
if(reg == null) {
|
||||
if(def instanceof Registration) {
|
||||
reg = def;
|
||||
}
|
||||
else {
|
||||
reg = new Registration(def);
|
||||
}
|
||||
var reg;
|
||||
|
||||
reg.name = name;
|
||||
this.store[name] = reg;
|
||||
if(this.store[name] != null) {
|
||||
console.warn("Previous registration for [%1] has been replaced", name);
|
||||
}
|
||||
|
||||
if(def instanceof Registration) {
|
||||
reg = def;
|
||||
}
|
||||
else {
|
||||
reg = new Registration(def);
|
||||
}
|
||||
|
||||
reg.name = name;
|
||||
this.store[name] = reg;
|
||||
|
||||
// console.log('[' + name + '] component registered');
|
||||
return reg;
|
||||
};
|
||||
@@ -54,6 +57,14 @@
|
||||
|
||||
return reg.resolved;
|
||||
}
|
||||
|
||||
Container.prototype.clone = function () {
|
||||
var newStore = {};
|
||||
for(var key in this.store) {
|
||||
newStore[key] = this.store[key];
|
||||
}
|
||||
return new Container(newStore);
|
||||
};
|
||||
|
||||
|
||||
function Registration(definition) {
|
||||
|
||||
20
tests/core/diSpec.js
Normal file
20
tests/core/diSpec.js
Normal file
@@ -0,0 +1,20 @@
|
||||
describe("cloned container", function() {
|
||||
var objA = { id: "a"};
|
||||
var objB = { id: "b" };
|
||||
var objC = { id: 'c'};
|
||||
|
||||
var parent = new core.Container();
|
||||
|
||||
parent.register('a', objA);
|
||||
parent.register('b', objB);
|
||||
|
||||
var cloned = parent.clone();
|
||||
cloned.register('a', objC);
|
||||
|
||||
it("should be independent from source container", function() {
|
||||
expect(parent.resolve('a')).toBe(objA);
|
||||
expect(cloned.resolve('a')).toBe(objC);
|
||||
expect(parent.resolve('b')).toBe(objB);
|
||||
expect(cloned.resolve('b')).toBe(objB);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user