Class: Omnizip::Algorithms::PPMdBase

Inherits:
Omnizip::Algorithm show all
Includes:
BaseConstants
Defined in:
lib/omnizip/algorithms/ppmd_base.rb

Overview

Base class for PPMd (Prediction by Partial Matching) algorithms

This abstract base class provides common functionality for PPMd variants (PPMd7, PPMd8, etc.) while allowing each variant to implement its specific features.

The design follows the Template Method pattern, where common operations are defined here and variant-specific operations are delegated to subclasses.

Direct Known Subclasses

PPMd8

Defined Under Namespace

Modules: BaseConstants

Constant Summary

Constants included from BaseConstants

BaseConstants::ALPHABET_SIZE, BaseConstants::BOT_VALUE, BaseConstants::DEFAULT_MEM_SIZE, BaseConstants::DEFAULT_ORDER, BaseConstants::MAX_MEM_SIZE, BaseConstants::MAX_ORDER, BaseConstants::MIN_MEM_SIZE, BaseConstants::MIN_ORDER, BaseConstants::TOP_VALUE

Instance Attribute Summary

Attributes inherited from Omnizip::Algorithm

#filter, #options

Instance Method Summary collapse

Methods inherited from Omnizip::Algorithm

inherited, #initialize, metadata, #with_filter

Constructor Details

This class inherits a constructor from Omnizip::Algorithm

Instance Method Details

#compress(input, output, options = {}) ⇒ void

This method returns an undefined value.

Compress data using PPMd variant

Parameters:

  • input (IO, String)

    Input data to compress

  • output (IO, String)

    Output for compressed data

  • options (Hash) (defaults to: {})

    Compression options



63
64
65
66
67
68
69
# File 'lib/omnizip/algorithms/ppmd_base.rb', line 63

def compress(input, output, options = {})
  input = prepare_input(input)
  output = prepare_output(output)

  encoder = create_encoder(output, options)
  encoder.encode_stream(input)
end

#decompress(input, output, options = {}) ⇒ void

This method returns an undefined value.

Decompress data using PPMd variant

Parameters:

  • input (IO, String)

    Compressed input data

  • output (IO, String)

    Output for decompressed data

  • options (Hash) (defaults to: {})

    Decompression options



77
78
79
80
81
82
83
84
85
# File 'lib/omnizip/algorithms/ppmd_base.rb', line 77

def decompress(input, output, options = {})
  input = prepare_input(input)
  output = prepare_output(output)

  decoder = create_decoder(input, options)
  result = decoder.decode_stream

  output.write(result)
end