From ee393cd93344e364b4eb2856b30cd22f5bb1f595 Mon Sep 17 00:00:00 2001 From: Jeff Schiller Date: Wed, 27 Jan 2010 19:35:13 +0000 Subject: [PATCH] Fix parsing error with url() format with quotes in it git-svn-id: http://svg-edit.googlecode.com/svn/trunk@1285 eee81c28-f429-11dd-99c0-75d572ba1ddd --- editor/svgcanvas.js | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/editor/svgcanvas.js b/editor/svgcanvas.js index 1bed9074..8f9f9fbb 100644 --- a/editor/svgcanvas.js +++ b/editor/svgcanvas.js @@ -1159,6 +1159,12 @@ function BatchCommand(text) { return; } } + + // TODO: if element has fill/stroke pointing to a non-local reference, need to remove + // the attribute + // i.e. or + // or + // or // recurse to children i = node.childNodes.length; @@ -1193,15 +1199,34 @@ function BatchCommand(text) { $.each(all_els, function(i, el) { var fill = el.getAttribute('fill'); - if(fill && fill.indexOf('url(#') == 0) { - //found gradient - grad_uses.push(fill.substring(5,fill.indexOf(')'))); - } + if(fill) { + // url(#somegrad) + if (fill.indexOf('url(#') == 0) { + grad_uses.push(fill.substring(5,fill.indexOf(')'))); + } + // url("#somegrad") + else if (fill.indexOf('url("#') == 0) { + grad_uses.push(fill.substring(6,fill.indexOf('"',7))); + } + // url('#somegrad') + else if (fill.indexOf("url('#)") == 0) { + grad_uses.push(fill.substring(6,fill.indexOf("'",7))); + } + } var stroke = el.getAttribute('stroke'); - if(stroke && stroke.indexOf('url(#') == 0) { - //found gradient - grad_uses.push(stroke.substring(5,stroke.indexOf(')'))); + if (stroke) { + if (stroke.indexOf('url(#') == 0) { + grad_uses.push(stroke.substring(5,stroke.indexOf(')'))); + } + else if (stroke.indexOf('url("#') == 0) { + grad_uses.push(stroke.substring(6,stroke.indexOf('"',7))); + } + // url('#somegrad') + else if (stroke.indexOf("url('#)") == 0) { + grad_uses.push(stroke.substring(6,stroke.indexOf("'",7))); + } + } // gradients can refer to other gradients