From 26108cb6ddfa48f5b1530ef035ba38c3c117d9ad Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aleksander=20=C5=81ukasz?= Date: Wed, 4 Dec 2013 11:35:18 +0100 Subject: [PATCH] Refactoring in WLXMLDocument.registerExtension --- src/wlxml/wlxml.js | 73 ++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 38 deletions(-) diff --git a/src/wlxml/wlxml.js b/src/wlxml/wlxml.js index ee85a03..01ab869 100644 --- a/src/wlxml/wlxml.js +++ b/src/wlxml/wlxml.js @@ -276,30 +276,7 @@ $.extend(WLXMLDocument.prototype, { registerExtension: function(extension) { //debugger; var doc = this, - existingPropertyName = _.values(this); - - [ - {source: extension.document, target: doc}, - {source: extension.documentNode, target: [doc.ElementNodeFactory.prototype, doc.TextNodeFactory.prototype]}, - - ].forEach(function(x) { - if(x.source && x.source.methods) { - existingPropertyName = _.values(x.target) - _.pairs(x.source.methods).forEach(function(pair) { - var methodName = pair[0], - method = pair[1], - targets = _.isArray(x.target) ? x.target : [x.target]; - if(_.contains(existingPropertyName, methodName)) { - throw new Error('Cannot extend XXX with method name {methodName}. Name already exists.'.replace('{methodName}', methodName)); - } - targets.forEach(function(target) { - target[methodName] = method; - }); - - }); - } - }); - + existingPropertyNames = _.values(this); var getTrans = function(desc, methodName) { if(typeof desc === 'function') { @@ -312,21 +289,41 @@ $.extend(WLXMLDocument.prototype, { return desc; }; - if(extension.document && extension.document.transformations) { - _.pairs(extension.document.transformations).forEach(function(pair) { - var transformation = getTrans(pair[1], pair[0]); - doc.transformations.register(transformations.createContextTransformation(transformation)); - }); - } + [ + {source: extension.document, target: doc}, + {source: extension.documentNode, target: [doc.ElementNodeFactory.prototype, doc.TextNodeFactory.prototype]}, - if(extension.documentNode && extension.documentNode.transformations) { - _.pairs(extension.documentNode.transformations).forEach(function(pair) { - var transformation = getTrans(pair[1], pair[0]); - - doc.ElementNodeFactory.prototype.transformations.register(transformations.createContextTransformation(transformation)); - doc.TextNodeFactory.prototype.transformations.register(transformations.createContextTransformation(transformation)); - }); - } + ].forEach(function(mapping) { + if(mapping.source) { + if(mapping.source.methods) { + existingPropertyNames = _.values(mapping.target) + _.pairs(mapping.source.methods).forEach(function(pair) { + var methodName = pair[0], + method = pair[1], + targets = _.isArray(mapping.target) ? mapping.target : [mapping.target]; + if(_.contains(existingPropertyNames, methodName)) { + throw new Error('Cannot extend {target} with method name {methodName}. Name already exists.' + .replace('{target}', mapping.target) + .replace('{methodName}', methodName) + ); + } + targets.forEach(function(target) { + target[methodName] = method; + }); + }); + } + + if(mapping.source.transformations) { + _.pairs(mapping.source.transformations).forEach(function(pair) { + var transformation = getTrans(pair[1], pair[0]), + targets = _.isArray(mapping.target) ? mapping.target : [mapping.target]; + targets.forEach(function(target) { + target.transformations.register(transformations.createContextTransformation(transformation)); + }); + }); + } + } + }); _.pairs(extension.wlxmlClass).forEach(function(pair) { var className = pair[0], -- 2.20.1