# # This module provides access to the [zlib library](http://zlib.net). Zlib is # designed to be a portable, free, general-purpose, legally unencumbered -- that # is, not covered by any patents -- lossless data-compression library for use on # virtually any computer hardware and operating system. # # The zlib compression library provides in-memory compression and decompression # functions, including integrity checks of the uncompressed data. # # The zlib compressed data format is described in RFC 1950, which is a wrapper # around a deflate stream which is described in RFC 1951. # # The library also supports reading and writing files in gzip (.gz) format with # an interface similar to that of IO. The gzip format is described in RFC 1952 # which is also a wrapper around a deflate stream. # # The zlib format was designed to be compact and fast for use in memory and on # communications channels. The gzip format was designed for single-file # compression on file systems, has a larger header than zlib to maintain # directory information, and uses a different, slower check method than zlib. # # See your system's zlib.h for further information about zlib # # ## Sample usage # # Using the wrapper to compress strings with default parameters is quite simple: # # require "zlib" # # data_to_compress = File.read("don_quixote.txt") # # puts "Input size: #{data_to_compress.size}" # #=> Input size: 2347740 # # data_compressed = Zlib::Deflate.deflate(data_to_compress) # # puts "Compressed size: #{data_compressed.size}" # #=> Compressed size: 887238 # # uncompressed_data = Zlib::Inflate.inflate(data_compressed) # # puts "Uncompressed data is: #{uncompressed_data}" # #=> Uncompressed data is: The Project Gutenberg EBook of Don Quixote... # # ## Class tree # # * Zlib::Deflate # * Zlib::Inflate # * Zlib::ZStream # * Zlib::Error # * Zlib::StreamEnd # * Zlib::NeedDict # * Zlib::DataError # * Zlib::StreamError # * Zlib::MemError # * Zlib::BufError # * Zlib::VersionError # * Zlib::InProgressError # # # # (if you have GZIP_SUPPORT) # * Zlib::GzipReader # * Zlib::GzipWriter # * Zlib::GzipFile # * Zlib::GzipFile::Error # * Zlib::GzipFile::LengthError # * Zlib::GzipFile::CRCError # * Zlib::GzipFile::NoFooter # module Zlib # # Zlib::GzipFile is an abstract class for handling a gzip formatted compressed # file. The operations are defined in the subclasses, Zlib::GzipReader for # reading, and Zlib::GzipWriter for writing. # # GzipReader should be used by associating an IO, or IO-like, object. # # ## Method Catalogue # # * ::wrap # * ::open (Zlib::GzipReader::open and Zlib::GzipWriter::open) # * #close # * #closed? # * #comment # * comment= (Zlib::GzipWriter#comment=) # * #crc # * eof? (Zlib::GzipReader#eof?) # * #finish # * #level # * lineno (Zlib::GzipReader#lineno) # * lineno= (Zlib::GzipReader#lineno=) # * #mtime # * mtime= (Zlib::GzipWriter#mtime=) # * #orig_name # * orig_name (Zlib::GzipWriter#orig_name=) # * #os_code # * path (when the underlying IO supports #path) # * #sync # * #sync= # * #to_io # # # (due to internal structure, documentation may appear under Zlib::GzipReader or # Zlib::GzipWriter) # class GzipFile # # Raised when gzip file footer is not found. # class NoFooter < Zlib::GzipFile::Error end end end