module LZWS::String::Option

LZWS::Option module.

Constants

COMPRESSOR_DEFAULTS

Current compressor defaults.

DECOMPRESSOR_DEFAULTS

Current decompressor defaults.

DEFAULT_BUFFER_LENGTH

Current default buffer length.

Public Class Methods

get_compressor_options(options, buffer_length_names) click to toggle source

Processes compressor options and buffer_length_names. Option: :source_buffer_length source buffer length. Option: :destination_buffer_length destination buffer length. Option: :gvl enables global VM lock where possible. Option: :max_code_bit_length max code bit length. Option: :block_mode enables block mode. Option: :without_magic_header disables magic header. Option: :msb enables most significant bit mode. Option: :unaligned_bit_groups enables unaligned bit groups. Option: :quiet disables lzws library logging. Returns processed compressor options.

# File lib/lzws/option.rb, line 60
def self.get_compressor_options(options, buffer_length_names)
  Validation.validate_hash options

  buffer_length_defaults = buffer_length_names.each_with_object({}) do |name, defaults|
    defaults[name] = DEFAULT_BUFFER_LENGTH
  end

  options = COMPRESSOR_DEFAULTS.merge(buffer_length_defaults).merge options

  buffer_length_names.each { |name| Validation.validate_not_negative_integer options[name] }

  Validation.validate_bool options[:gvl]

  max_code_bit_length = options[:max_code_bit_length]
  unless max_code_bit_length.nil?
    Validation.validate_positive_integer max_code_bit_length
    raise ValidateError, "invalid max code bit length" if
      max_code_bit_length < LOWEST_MAX_CODE_BIT_LENGTH || max_code_bit_length > BIGGEST_MAX_CODE_BIT_LENGTH
  end

  without_magic_header = options[:without_magic_header]
  Validation.validate_bool without_magic_header unless without_magic_header.nil?

  block_mode = options[:block_mode]
  Validation.validate_bool block_mode unless block_mode.nil?

  msb = options[:msb]
  Validation.validate_bool msb unless msb.nil?

  unaligned_bit_groups = options[:unaligned_bit_groups]
  Validation.validate_bool unaligned_bit_groups unless unaligned_bit_groups.nil?

  quiet = options[:quiet]
  Validation.validate_bool quiet unless quiet.nil?

  options
end
get_decompressor_options(options, buffer_length_names) click to toggle source

Processes decompressor options and buffer_length_names. Option: :source_buffer_length source buffer length. Option: :destination_buffer_length destination buffer length. Option: :gvl enables global VM lock where possible. Option: :without_magic_header disables magic header. Option: :msb enables most significant bit mode. Option: :unaligned_bit_groups enables unaligned bit groups. Option: :quiet disables lzws library logging. Returns processed decompressor options.

# File lib/lzws/option.rb, line 107
def self.get_decompressor_options(options, buffer_length_names)
  Validation.validate_hash options

  buffer_length_defaults = buffer_length_names.each_with_object({}) do |name, defaults|
    defaults[name] = DEFAULT_BUFFER_LENGTH
  end

  options = DECOMPRESSOR_DEFAULTS.merge(buffer_length_defaults).merge options

  buffer_length_names.each { |name| Validation.validate_not_negative_integer options[name] }

  Validation.validate_bool options[:gvl]

  without_magic_header = options[:without_magic_header]
  Validation.validate_bool without_magic_header unless without_magic_header.nil?

  msb = options[:msb]
  Validation.validate_bool msb unless msb.nil?

  unaligned_bit_groups = options[:unaligned_bit_groups]
  Validation.validate_bool unaligned_bit_groups unless unaligned_bit_groups.nil?

  quiet = options[:quiet]
  Validation.validate_bool quiet unless quiet.nil?

  options
end