Class: RubyXL::OOXMLTopLevelObject
- Inherits:
-
OOXMLObject
- Object
- OOXMLObject
- RubyXL::OOXMLTopLevelObject
- Defined in:
- lib/rubyXL/objects/ooxml_object.rb
Overview
Extension class providing functionality for top-level OOXML objects that are represented by their own .xml
files in .xslx
zip container.
Direct Known Subclasses
CalculationChain, Chartsheet, DocumentProperties, SharedStringsTable, Stylesheet, Workbook, WorkbookRelationships, Worksheet
Class Method Summary collapse
-
.filepath ⇒ Object
Prototype method.
-
.parse_file(dirpath) ⇒ Object
Generates the top-level OOXML object by parsing its XML file from the temporary directory containing the unzipped contents of
.xslx
=== Parameters *dirpath
- path to the directory with the unzipped.xslx
contents. -
.set_namespaces(namespace_hash) ⇒ Object
Sets the list of namespaces on this object to be added when writing out XML.
Instance Method Summary collapse
-
#add_to_zip(zipfile) ⇒ Object
Saves the contents of the object as XML to respective location in
.xslx
zip container.
Methods inherited from OOXMLObject
#before_write_xml, define_attribute, define_child_node, define_element_name, #dup, #index_in_collection, #initialize, obtain_class_variable, parse, set_countable, #write_xml
Constructor Details
This class inherits a constructor from RubyXL::OOXMLObject
Class Method Details
.filepath ⇒ Object
Prototype method. For top-level OOXML object, returns the path at which the current object’s XML file is located within the .xslx
zip container.
320 321 322 |
# File 'lib/rubyXL/objects/ooxml_object.rb', line 320 def self.filepath raise 'Subclass responsebility' end |
.parse_file(dirpath) ⇒ Object
Generates the top-level OOXML object by parsing its XML file from the temporary directory containing the unzipped contents of .xslx
Parameters
-
dirpath
- path to the directory with the unzipped.xslx
contents.
338 339 340 341 342 |
# File 'lib/rubyXL/objects/ooxml_object.rb', line 338 def self.parse_file(dirpath) full_path = File.join(dirpath, filepath) return nil unless File.exist?(full_path) parse(File.open(full_path, 'r')) end |
.set_namespaces(namespace_hash) ⇒ Object
Sets the list of namespaces on this object to be added when writing out XML. Valid only on top-level objects.
Parameters
-
namespace_hash
- Hash of namespaces in the form of"prefix" => "url"
Examples
set_namespaces('xmlns' => 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',
'xmlns:r' => 'http://schemas.openxmlformats.org/officeDocument/2006/relationships')
330 331 332 |
# File 'lib/rubyXL/objects/ooxml_object.rb', line 330 def self.set_namespaces(namespace_hash) self.class_variable_set(:@@ooxml_namespaces, namespace_hash) end |
Instance Method Details
#add_to_zip(zipfile) ⇒ Object
Saves the contents of the object as XML to respective location in .xslx
zip container.
Parameters
-
zipfile
- ::Zip::File to which the resulting XNMML should be added.
347 348 349 350 351 |
# File 'lib/rubyXL/objects/ooxml_object.rb', line 347 def add_to_zip(zipfile) xml_string = write_xml return if xml_string.empty? zipfile.get_output_stream(self.class.filepath) { |f| f << xml_string } end |