Skip to content

Commit fb3bdbd

Browse files
committed
fix(svg): empty children issue
1 parent 6eedee0 commit fb3bdbd

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

src/svg.jl

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,26 @@ function xmlnode(tag, attrs, children=nothing)
2828
end
2929
function xml_addchildren!(svgdoc::Node, children)
3030
children isa Pair && (children = (children,))
31+
rt = svgdoc[end]
3132
for (e, attrs) in children
32-
pushfirst!(svgdoc[end].children, xmlnode(e, attrs))
33+
c = xmlnode(e, attrs)
34+
if isempty(XML.children(rt))
35+
rt = Node(nodetype(rt), tag(rt), attributes(rt), value(rt), c)
36+
else
37+
pushfirst!(rt.children, c)
38+
end
3339
end
40+
svgdoc[end] = rt
3441
svgdoc
3542
end
3643

3744
function xml_wrapchildren!(svgdoc::Node, wrappers)
3845
wrappers isa Pair && (wrappers = (wrappers,))
3946
for (e, attrs) in wrappers
40-
we = xmlnode(e, attrs, copy(children(svgdoc[end])))
41-
empty!(svgdoc[end].children)
42-
push!(svgdoc[end].children, we)
47+
lastnode = svgdoc[end]
48+
we = xmlnode(e, attrs, children(lastnode))
49+
we = Node(nodetype(lastnode), tag(lastnode), attributes(lastnode), value(lastnode), we)
50+
svgdoc[end] = we
4351
end
4452
svgdoc
4553
end
@@ -50,7 +58,7 @@ function xml_stack!(svgs::AbstractVector{Node})
5058
for svg in rest
5159
for c in children(svg[end])
5260
if isempty(children(rt))
53-
rt = Node(XML.nodetype(rt), tag(rt), XML.attributes(rt), value(rt), c)
61+
rt = Node(nodetype(rt), tag(rt), attributes(rt), value(rt), c)
5462
else
5563
push!(rt, c)
5664
end

0 commit comments

Comments
 (0)