From 75a919da5ba4f18ead0353f0efb2d9198e415edf Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aleksander=20=C5=81ukasz?= Date: Mon, 4 Aug 2014 12:27:42 +0200 Subject: [PATCH 1/1] smartxml: Node.detach informs its caller if merge was performed --- src/smartxml/core.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/smartxml/core.js b/src/smartxml/core.js index f907a20..6329491 100644 --- a/src/smartxml/core.js +++ b/src/smartxml/core.js @@ -121,10 +121,13 @@ var documentNodeTransformations = { var elementNodeTransformations = { detach: function(params) { - var next; - params = _.extend({ - normalizeStrategy: 'merge' - }, params); + var next, prev; + + params = params || {}; + + if(!params.normalizeStrategy) { + params.normalizeStrategy = 'merge'; + } if(this.parent() && this.isSurroundedByTextNodes()) { if(params.normalizeStrategy === 'detach-left') { @@ -133,7 +136,12 @@ var elementNodeTransformations = { this.next().detach(); } else if(params.normalizeStrategy === 'merge') { next = this.next(); - this.prev().appendText(next.getText()); + prev = this.prev(); + params.ret = { + mergedTo: prev, + previousLen: prev.getText().length + }; + prev.appendText(next.getText()); next.detach(); } else { throw new Error('unknown normalize strategy for detach'); -- 2.20.1