From 4cf9fe96c6e03318a3748deb0338681360c57fdd Mon Sep 17 00:00:00 2001 From: Ulrich-Matthias Schäfer Date: Thu, 16 Mar 2017 13:40:53 +0100 Subject: rework import/export method to be more straight forward and without regex magic --- src/element.js | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/element.js b/src/element.js index 230aa4b..d82b8a1 100644 --- a/src/element.js +++ b/src/element.js @@ -204,31 +204,26 @@ SVG.Element = SVG.invent({ } // Import raw svg , svg: function(svg) { - // create temporary holder - var well = document.createElement('svg') + var well, len // act as a setter if svg is given if (svg && this instanceof SVG.Parent) { + + // create temporary holder + well = document.createElementNS(SVG.ns, 'svg') // dump raw svg - well.innerHTML = '' + svg.replace(/\n/, '').replace(/<(\w+)([^<]+?)\/>/g, '<$1$2>') + '' + well.innerHTML = svg // transplant nodes - for (var i = 0, il = well.firstChild.childNodes.length; i < il; i++) - this.node.appendChild(well.firstChild.firstChild) + for (len = well.childNodes.length;len--;) + if(well.firstChild.nodeType != 1) + well.removeChild(well.firstChild) + else + this.node.appendChild(well.firstChild) // otherwise act as a getter } else { - // create a wrapping svg element in case of partial content - well.appendChild(svg = document.createElement('svg')) - - // write svgjs data to the dom - this.writeDataToDom() - - // insert a copy of this node - svg.appendChild(this.node.cloneNode(true)) - - // return target element - return well.innerHTML.replace(/^/, '').replace(/<\/svg>$/, '') + return this.node.outerHTML } return this -- cgit v1.2.3