class Xlsxrb::Ooxml::ZipGenerator
Generates a simple ZIP file using only the standard library.
Public Class Methods
(Time time) → Array[Integer]
Source
# File lib/xlsxrb/ooxml/zip_generator.rb, line 57 def self.dos_datetime(time) dos_date = ((time.year - 1980) << 9) + (time.month << 5) + time.day dos_time = (time.hour << 11) + (time.min << 5) + (time.sec / 2) le16(dos_time) + le16(dos_date) end
Returns MS-DOS format datetime byte array (little-endian 16-bit time + date).
@param time [Time] @return [Array<Integer>]
(Integer value) → Array[Integer]
Source
# File lib/xlsxrb/ooxml/zip_generator.rb, line 42 def self.le16(value) [value].pack("v").bytes end
Returns little-endian 16-bit unsigned integer as an Array of byte values.
(Integer value) → Array[Integer]
Source
# File lib/xlsxrb/ooxml/zip_generator.rb, line 48 def self.le32(value) [value].pack("V").bytes end
Returns little-endian 32-bit unsigned integer as an Array of byte values.
(untyped filepath) → untyped
Source
# File lib/xlsxrb/ooxml/zip_generator.rb, line 11 def initialize(filepath) @filepath = filepath @entries = [] @file = nil end
Public Instance Methods
(untyped filepath, untyped content) → untyped
Source
# File lib/xlsxrb/ooxml/zip_generator.rb, line 18 def add_entry(filepath, content) compressed_data = compress(content) @entries << { path: filepath, content: content, compressed_data: compressed_data, crc32: crc32(content), uncompressed_size: content.bytesize, compressed_size: compressed_data.bytesize, mtime: Time.now } end
Adds an entry to the ZIP archive.
() → untyped
Source
# File lib/xlsxrb/ooxml/zip_generator.rb, line 32 def generate File.open(@filepath, "wb") do |f| @file = f write_entries write_central_directory end end
Generates the ZIP file.