js-resolver
Version:
A light weight Inversion of Control(IOC) container for module pattern approch.
58 lines (50 loc) • 1.78 kB
JavaScript
(function(window, log, exception) {
"use strict";
var dependecies = {};
var $resolver = function(name, dependecy) {
if (dependecy) {
dependecies[name] = dependecy;
} else {
if (!dependecies.hasOwnProperty(name)) {
var msg = name + " does not exists in $resolver.";
log.error(msg);
throw new exception(msg);
}
}
return dependecies[name];
};
$resolver.prototype.constructor.has = function(name) {
return dependecies.hasOwnProperty(name);
};
$resolver.prototype.constructor.remove = function(name) {
if (dependecies.hasOwnProperty(name)){
delete dependecies[name];
}
};
$resolver.prototype.constructor.service = function(name, dependecy) {
$resolver(name, dependecy).extend = function(name, value) {
var s = this;
if (s.hasOwnProperty(name)) {
var msg = name + " is already registered in $resolver.";
log.error(msg);
throw new exception(msg);
} else {
s[name] = value;
}
return s;
};
};
$resolver.prototype.constructor.extend = function(serviceName, name, value) {
var msg = "";
if (!dependecies.hasOwnProperty(serviceName)) {
msg = name + " does not exists in $resolver.";
log.error(msg);
throw new exception(msg);
} else {
dependecies[serviceName].extend(name, value);
}
return this;
};
Object.freeze($resolver);
window.$resolver = $resolver;
})(this, this.console, this.Error);