- 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));
+ });
+ });
+ }
+ }
+ });