lib/svggvs/file.rb in svggvs-0.0.9 vs lib/svggvs/file.rb in svggvs-0.0.10
- old
+ new
@@ -27,16 +27,32 @@
def target
@target ||= doc.at_css('g[inkscape|label="Target"]')
end
+ def defs
+ @defs ||= doc.at_css('defs')
+ end
+
+ def original_defs
+ @original_defs ||= defs.dup
+ end
+
+ def reset_defs!
+ defs.children.each(&:remove)
+
+ defs << original_defs.children
+ end
+
def doc
return @doc if @doc
@doc = Nokogiri::XML(::File.read(@path))
clear_targets!
+ original_defs
+
@doc
end
def clear_targets!
target.children.each(&:remove)
@@ -47,15 +63,21 @@
new_target[:id] = new_target[:id] + "_#{@instance}"
new_target['inkscape:label'] = new_target['inkscape:label'] + "_#{@instance}"
target_obj = Target.new(new_target)
+ reset_defs!
+
yield target_obj
target_obj.replaced
target_obj.unclone
target << target_obj.target
+
+ target_obj.injected_defs.values.each do |v|
+ defs << v
+ end
@instance += 1
end
def dup_with_only_last_target