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, ContentTypes, CoreProperties, DocumentProperties, OOXMLRelationshipsFile, SharedStringsTable, Stylesheet, Theme, Workbook, Worksheet
Class Method Summary collapse
-
.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.
- .xlsx_path ⇒ Object
Instance Method Summary collapse
-
#add_to_zip(zipfile) ⇒ Object
Saves the contents of the object as XML to respective location in .xslx zip container.
-
#xlsx_path ⇒ Object
Prototype method.
Methods included from OOXMLObjectClassMethods
#define_attribute, #define_child_node, #define_element_name, #obtain_class_variable, #parse, #set_countable
Methods included from OOXMLObjectInstanceMethods
#before_write_xml, #dup, #index_in_collection, #initialize, #write_xml
Class Method Details
.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.
420 421 422 423 424 425 |
# File 'lib/rubyXL/objects/ooxml_object.rb', line 420 def self.parse_file(dirpath) full_path = File.join(dirpath, xlsx_path) return nil unless File.exist?(full_path) # Making sure that the file will be automatically closed immediately after it has been read File.open(full_path, 'r') { |f| parse(f) } 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('http://schemas.openxmlformats.org/spreadsheetml/2006/main' => '', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships' => 'r')
412 413 414 |
# File 'lib/rubyXL/objects/ooxml_object.rb', line 412 def self.set_namespaces(namespace_hash) self.class_variable_set(:@@ooxml_namespaces, namespace_hash) end |
.xlsx_path ⇒ Object
402 403 404 |
# File 'lib/rubyXL/objects/ooxml_object.rb', line 402 def self.xlsx_path raise 'Subclass responsebility' 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.
430 431 432 433 434 |
# File 'lib/rubyXL/objects/ooxml_object.rb', line 430 def add_to_zip(zipfile) xml_string = write_xml return if xml_string.empty? zipfile.get_output_stream(self.xlsx_path) { |f| f << xml_string } end |
#xlsx_path ⇒ 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.
398 399 400 |
# File 'lib/rubyXL/objects/ooxml_object.rb', line 398 def xlsx_path self.class.xlsx_path end |