X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/3c6c8fe1de117ec69a146ea18aedac5d8dc30691..90a4709555ba28d2175c7a359d538e7775f9bf64:/src/wlxml/wlxml.js diff --git a/src/wlxml/wlxml.js b/src/wlxml/wlxml.js index 13522ba..016f793 100644 --- a/src/wlxml/wlxml.js +++ b/src/wlxml/wlxml.js @@ -22,23 +22,13 @@ AttributesList.prototype.keys = function() { }; var installObject = function(instance, klass) { - var methods = instance.document.classMethods[klass] || instance.document.classTransformations; - if(methods) { - instance.object = Object.create(_.extend({ - transform: function(name, args) { - // TODO: refactor with DocumentElement.transform - var Transformation = instance.document.classTransformations[klass].get(name), - transformation; - if(Transformation) { - transformation = new Transformation(instance.document, instance, args); - } - return instance.document.transform(transformation); - } - }, methods)); - _.keys(methods).forEach(function(key) { - instance.object[key] = _.bind(instance.object[key], instance); - }); - } + var methods = instance.document.classMethods[klass] || {}, + transformations = instance.document.classTransformations[klass] || {}; + + instance.object = Object.create(_.extend({}, methods, transformations)); + _.keys(methods).concat(_.keys(transformations)).forEach(function(key) { + instance.object[key] = _.bind(instance.object[key], instance); + }); } var WLXMLElementNode = function(nativeNode, document) { @@ -256,8 +246,11 @@ $.extend(WLXMLDocument.prototype, { }, registerClassTransformation: function(Transformation, className) { - var thisClassTransformations = (this.classTransformations[className] = this.classTransformations[className] || new transformations.TransformationStorage()); - return thisClassTransformations.register(Transformation); + var thisClassTransformations = (this.classTransformations[className] = this.classTransformations[className] || {}); + thisClassTransformations[Transformation.prototype.name] = function(args) { + var nodeInstance = this; + return nodeInstance.transform(Transformation, args); + } }, registerClassMethod: function(methodName, method, className) {