Sha256: adcdd7e1eb5038093ca031de732698d68bb8b796cddcba90deeff368091f9bdf

Contents?: true

Size: 857 Bytes

Versions: 1

Compression:

Stored size: 857 Bytes

Contents

# typed: false
# frozen_string_literal: true

require 'lzfse'
require 'lzma'
require 'compress/lzss'

require 'sorbet-runtime'

module MooTool
  # The magic Apple decompressor (as in it uses magics)
  class Decompressor
    COMPRESSION_LZSS = 'lzss'
    COMPRESSION_LZVN = 'lzvn'
    COMPRESSION_LZFSE = 'bvx2'
    COMPRESSION_LZMA = 'lzma'

    attr_reader :value

    def initialize(data)
      @value = case data[0..3]
               when COMPRESSION_LZFSE
                 LZFSE.lzfse_decompress(data)
               when COMPRESSION_LZVN
                 LZFSE.lzvn_decompress(data)
               when COMPRESSION_LZSS
                 OpenSSL::Digest::DSS.decompress(data)
               when COMPRESSION_LZMA
                 Net::DNS::QueryTypes::ATMA.decompress(data)
               else
                 data
               end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mootool-0.2.8 lib/mootool/models/decompressor.rb