module RubyXL::RelationshipSupport
RelationshipSupport
module enables automatic loading and saving of _rels for the respective file
Attributes
generic_storage[RW]
relationship_container[RW]
Public Class Methods
included(klass)
click to toggle source
# File lib/rubyXL/objects/relationships.rb, line 147 def self.included(klass) klass.class_variable_set(:@@ooxml_relationships, {}) klass.extend RubyXL::RelationshipSupport::ClassMehods end
Public Instance Methods
attach_relationship(rid, rf)
click to toggle source
# File lib/rubyXL/objects/relationships.rb, line 187 def attach_relationship(rid, rf) relationships = self.class.class_variable_get(:@@ooxml_relationships) klass = rf.class if relationships.has_key?(klass) then accessor = relationships[klass] case accessor when NilClass then # Relationship is known, but we don't have a special accessor for it, store as generic store_relationship(rf) when false then # Do nothing, the code will perform attaching on its own else container = self.send(accessor) if container.is_a?(Array) then container << rf else self.send("#{accessor}=", rf) end end else store_relationship(rf, :unknown) end end
load_relationships(dir_path, base_file_name)
click to toggle source
# File lib/rubyXL/objects/relationships.rb, line 178 def load_relationships(dir_path, base_file_name) self.relationship_container = RubyXL::OOXMLRelationshipsFile.load_relationship_file(dir_path, base_file_name) return if relationship_container.nil? relationship_container.load_related_files(dir_path, base_file_name).each_pair { |rid, related_file| attach_relationship(rid, related_file) if related_file } end
store_relationship(related_file, unknown = false)
click to toggle source
# File lib/rubyXL/objects/relationships.rb, line 208 def store_relationship(related_file, unknown = false) self.generic_storage ||= [] if unknown && !RubyXL.class_variable_get(:@@suppress_warnings) then puts "WARNING: #{self.class} is not aware how to process #{related_file.class}" end self.generic_storage << related_file end