Class: ODF::Document

Inherits:
Container show all
Defined in:
lib/odf/document.rb

Direct Known Subclasses

Spreadsheet, Text

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Container

contains, create

Class Method Details

.file(ods_file_name, &contents) ⇒ Object



30
31
32
33
# File 'lib/odf/document.rb', line 30

def self.file(ods_file_name, &contents)
  (doc = new).instance_eval(&contents)
  doc.write_to ods_file_name
end

Instance Method Details

#bytesObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/odf/document.rb', line 39

def bytes
  buffer = Zip::OutputStream::write_buffer do |zio|
    zio.put_next_entry('META-INF/manifest.xml')
    zio << self.class.skeleton.manifest(self.class.doc_type)

    zio.put_next_entry('styles.xml')
    zio << self.class.skeleton.styles
    zio << self.office_styles_xml unless self.office_styles.empty?
    zio << "</office:styles> </office:document-styles>"

    zio.put_next_entry('content.xml')
    zio << self.xml
  end

  buffer.set_encoding('ASCII-8BIT')
  buffer.rewind
  buffer.sysread
end

#write_to(ods_file_name) ⇒ Object



35
36
37
# File 'lib/odf/document.rb', line 35

def write_to(ods_file_name)
  File.open(ods_file_name, 'wb') { |f| f << self.bytes }
end