From 7e4209de3c2972b1ca4ada5e3de85197365f58af Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aleksander=20=C5=81ukasz?= Date: Fri, 6 Dec 2013 16:33:42 +0100 Subject: [PATCH] wip: transformations - handle dictionary arguments when creating automatic proxies --- src/smartxml/transformations.js | 42 +++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/src/smartxml/transformations.js b/src/smartxml/transformations.js index a78c9c9..f0b89f1 100644 --- a/src/smartxml/transformations.js +++ b/src/smartxml/transformations.js @@ -42,18 +42,40 @@ toret.createGenericTransformation = function(desc, name) { // }); // potem spr na dotychczasowych undo/redo tests; + + this.args.forEach(function(arg, idx, args) { - if(arg && arg.nodeType) { // ~ - var path = arg.getPath(); - Object.defineProperty(args, idx, { - get: function() { - if(transformation.hasRun && path) { - return transformation.document.getNodeByPath(path); - } else { - return arg; + var path; + if(arg) { + if(arg.nodeType) { // ~ + path = arg.getPath(); + Object.defineProperty(args, idx, { + get: function() { + if(transformation.hasRun && path) { + return transformation.document.getNodeByPath(path); + } else { + return arg; + } } - } - }); + }); + } else if(_.isObject(arg)) { + _.keys(arg).forEach(function(key) { + var value = arg[key], + path; + if(value && value.nodeType) { + path = value.getPath(); + Object.defineProperty(arg, key, { + get: function() { + if(transformation.hasRun && path) { + return transformation.document.getNodeByPath(path); + } else { + return value; + } + } + }); + } + }); + } } }); -- 2.20.1