lib/svggvs/file.rb in svggvs-0.0.12 vs lib/svggvs/file.rb in svggvs-0.0.13

- old
+ new

@@ -1,6 +1,7 @@ require 'nokogiri' +require 'delegate' module SVGGVS class File def initialize(path_or_doc) @instance = 0 @@ -56,15 +57,45 @@ def clear_targets! target.children.each(&:remove) end + class SVGCache < SimpleDelegator + def initialize(doc) + @doc = doc + end + + def __getobj__ + @doc + end + + def is_clone_dup_type(href) + @is_clone_dup_type ||= {} + + return @is_clone_dup_type[href] if @is_clone_dup_type[href] != nil + + if source = css(href).first + if source.name == 'flowRoot' || source.name == 'text' + @is_clone_dup_type[href] = source + end + end + + @is_clone_dup_type[href] ||= false + + @is_clone_dup_type[href] + end + end + + def svg_cache + @svg_cache ||= SVGCache.new(source) + end + def with_new_target new_target = source.dup new_target[:id] = new_target[:id] + "_#{@instance}" new_target['inkscape:label'] = new_target['inkscape:label'] + "_#{@instance}" - target_obj = Target.new(new_target) + target_obj = Target.new(new_target, cache: svg_cache) reset_defs! yield target_obj