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