wlxml = require('wlxml/wlxml');
-var ElementsRegister = function(basePrototype, defaultPrototype) {
+var ElementsRegister = function(BaseType, NullType) {
this._register = {};
- this.basePrototype = basePrototype;
- this.DefaultType = this.createCanvasElementType(defaultPrototype);
+ this.BaseType = BaseType;
+ this.NullType = NullType;
};
_.extend(ElementsRegister.prototype, {
- createCanvasElementType: function(elementPrototype, extending) {
- var inheritFrom = this.basePrototype;
- if(extending && extending.tag) {
- inheritFrom = this.getElement(extending);
- }
+ createCanvasElementType: function(elementPrototype) {
+ var register = this;
var Constructor = function() {
- if(!this.super) {
- this.super = inheritFrom.prototype;
- }
- inheritFrom.apply(this, Array.prototype.slice.call(arguments, 0));
-
+ register.BaseType.apply(this, Array.prototype.slice.call(arguments, 0));
};
- Constructor.prototype = Object.create(inheritFrom.prototype);
- _.extend(Constructor.prototype, elementPrototype);
+ Constructor.prototype = elementPrototype;
return Constructor;
},
register: function(params) {
params.klass = params.klass || '';
- params.prototype = params.prototype || Object.create({});
+ params.prototype = params.prototype || this.NullType;
this._register[params.tag] = this._register[params.tag] || {};
- this._register[params.tag][params.klass] = this.createCanvasElementType(params.prototype, params.extending);
+ this._register[params.tag][params.klass] = this.createCanvasElementType(params.prototype);
},
getElement: function(params) {
params.klass = params.klass || '';
}
}.bind(this));
}
- if(!Factory) {
- Factory = this.DefaultType;
- }
return Factory;
}
});