Class: Cabriolet::CABOffsetCalculator
- Inherits:
-
OffsetCalculator
- Object
- OffsetCalculator
- Cabriolet::CABOffsetCalculator
- Defined in:
- lib/cabriolet/offset_calculator.rb
Overview
CAB-specific offset calculator
Calculates offsets for CFHEADER, CFFOLDER entries, CFFILE entries, and CFDATA blocks in Microsoft Cabinet files.
Instance Method Summary collapse
-
#calculate(structure) ⇒ Hash
Calculate CAB file offsets.
Instance Method Details
#calculate(structure) ⇒ Hash
Calculate CAB file offsets
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/cabriolet/offset_calculator.rb', line 57 def calculate(structure) offset = Constants::CFHEADER_SIZE # Folders section folders_offset = offset offset += Constants::CFFOLDER_SIZE * structure[:folders].size # Files section files_offset = offset structure[:files].each do |file_info| offset += Constants::CFFILE_SIZE offset += file_info[:name].bytesize + 1 # null-terminated end # Data blocks section data_offset = offset { folders: folders_offset, files: files_offset, data: data_offset, } end |