X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/3c6c8fe1de117ec69a146ea18aedac5d8dc30691..75d2183aafd4b2d3e94c17f6c3c8ee0d8a4738e4:/src/smartxml/smartxml.js?ds=inline diff --git a/src/smartxml/smartxml.js b/src/smartxml/smartxml.js index 202d9e6..bb6258e 100644 --- a/src/smartxml/smartxml.js +++ b/src/smartxml/smartxml.js @@ -575,6 +575,22 @@ var parseXML = function(xml) { return $($.trim(xml))[0]; }; +var registerTransformation = function(desc, name, target) { + var Transformation = transformations.createContextTransformation(desc, name); + target.register(Transformation); +}; + +var registerMethod = function(methodName, method, target) { + if(target[methodName]) { + throw new Error('Cannot extend {target} with method name {methodName}. Name already exists.' + .replace('{target}', target) + .replace('{methodName}', methodName) + ); + } + target[methodName] = method; +}; + + var Document = function(xml) { this.loadXML(xml); this.undoStack = []; @@ -764,29 +780,19 @@ $.extend(Document.prototype, Backbone.Events, { }, registerMethod: function(methodName, method) { - if(this[methodName]) { - throw new Error('Cannot extend document with method name {methodName}. Name already exists.' - .replace('{methodName}', methodName) - ); - } - this[methodName] = method; + registerMethod(methodName, method, this); }, - registerTransformation: function(Transformation) { - return this.transformations.register(Transformation); + registerNodeMethod: function(methodName, method) { + registerMethod(methodName, method, this._nodeMethods); }, - registerNodeMethod: function(methodName, method) { - if(this._nodeMethods[methodName]) { - throw new Error('Cannot extend document with method name {methodName}. Name already exists.' - .replace('{methodName}', methodName) - ); - } - this._nodeMethods[methodName] = method; + registerDocumentTransformation: function(desc, name) { + registerTransformation(desc, name, this.transformations); }, - registerNodeTransformation: function(Transformation) { - this._nodeTransformations.register(Transformation); + registerNodeTransformation: function(desc, name) { + registerTransformation(desc, name, this._nodeTransformations); }, registerExtension: function(extension) { @@ -813,8 +819,8 @@ $.extend(Document.prototype, Backbone.Events, { var name = pair[0], desc = pair[1], operation; - operation = {document: 'registerTransformation', documentNode: 'registerNodeTransformation'}[dstName]; - doc[operation](transformations.createContextTransformation(desc, name)); + operation = {document: 'registerDocumentTransformation', documentNode: 'registerNodeTransformation'}[dstName]; + doc[operation](desc, name); }); } }