Class: Omnizip::Formats::XzImpl::StreamEncoder
- Inherits:
-
Object
- Object
- Omnizip::Formats::XzImpl::StreamEncoder
- Includes:
- Omnizip::Formats::XzConst
- Defined in:
- lib/omnizip/formats/xz_impl/stream_encoder.rb
Overview
XZ Stream encoder Orchestrates the complete XZ stream creation Based on XZ Utils stream_encoder.c
Constant Summary
Constants included from Omnizip::Formats::XzConst
Omnizip::Formats::XzConst::BACKWARD_SIZE_MAX, Omnizip::Formats::XzConst::BACKWARD_SIZE_MIN, Omnizip::Formats::XzConst::BLOCK_HEADER_SIZE_MAX, Omnizip::Formats::XzConst::BLOCK_HEADER_SIZE_MIN, Omnizip::Formats::XzConst::CHECK_CRC32, Omnizip::Formats::XzConst::CHECK_CRC64, Omnizip::Formats::XzConst::CHECK_NONE, Omnizip::Formats::XzConst::CHECK_SHA256, Omnizip::Formats::XzConst::FILTERS_MAX, Omnizip::Formats::XzConst::FILTER_LZMA2, Omnizip::Formats::XzConst::FOOTER_MAGIC, Omnizip::Formats::XzConst::INDEX_INDICATOR, Omnizip::Formats::XzConst::MAGIC, Omnizip::Formats::XzConst::STREAM_FLAGS_SIZE, Omnizip::Formats::XzConst::STREAM_FOOTER_SIZE, Omnizip::Formats::XzConst::STREAM_HEADER_SIZE, Omnizip::Formats::XzConst::VLI_BYTES_MAX, Omnizip::Formats::XzConst::VLI_UNKNOWN
Instance Method Summary collapse
-
#encode(input) ⇒ String
Encode data into XZ format.
-
#initialize(check_type: CHECK_CRC64, dict_size: 64 * 1024 * 1024) ⇒ StreamEncoder
constructor
A new instance of StreamEncoder.
Constructor Details
#initialize(check_type: CHECK_CRC64, dict_size: 64 * 1024 * 1024) ⇒ StreamEncoder
Returns a new instance of StreamEncoder.
14 15 16 17 18 |
# File 'lib/omnizip/formats/xz_impl/stream_encoder.rb', line 14 def initialize(check_type: CHECK_CRC64, dict_size: 64 * 1024 * 1024) @check_type = check_type @dict_size = dict_size @index = IndexEncoder.new end |
Instance Method Details
#encode(input) ⇒ String
Encode data into XZ format
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/omnizip/formats/xz_impl/stream_encoder.rb', line 23 def encode(input) output = StringIO.new output.set_encoding(Encoding::BINARY) # Read input data input_data = Omnizip::IO::Source.for(input).read input_data = input_data.dup.force_encoding(Encoding::BINARY) # 1. Write Stream Header header = StreamHeader.new(check_type: @check_type) output.write(header.encode) # 2. Encode and write Block(s) encode_blocks(input_data, output) # 3. Write Index index_data = @index.encode output.write(index_data) # 4. Write Stream Footer = StreamFooter.new( check_type: @check_type, backward_size: @index.size, ) output.write(.encode) output.string end |