Sample code for 30+ languages & platforms
Ruby

Compress Text Feed to Binary

See more Compression Examples

This example receives incoming text data in chunks, compresses as a stream, and accumulates the compressed binary data.

Chilkat Ruby Downloads

Ruby
require 'chilkat'

success = false

# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

bdCompressed = Chilkat::CkBinData.new()

compress = Chilkat::CkCompression.new()
compress.put_Algorithm("deflate")
compress.put_Charset("utf-8")

sbUncompressedChunk = Chilkat::CkStringBuilder.new()

compress.put_FirstChunk(true)
compress.put_LastChunk(false)

for i in 0 .. 24
    if (i == 24)
        compress.put_LastChunk(true)
    end

    sbUncompressedChunk.Clear()
    sbUncompressedChunk.AppendInt(i)
    sbUncompressedChunk.Append(": This is a line of data to be compressed...\r\n")

    compress.CompressSb(sbUncompressedChunk,bdCompressed)

    compress.put_FirstChunk(false)
end

# Show the compressed data in hex format:
print "The hex encoded compressed text:" + "\n";
print bdCompressed.getEncoded("hex") + "\n";

# Now decompress in one call.  It is important to set both FirstChunk and LastChunk = true
bdDecompressed = Chilkat::CkBinData.new()
compress.put_FirstChunk(true)
compress.put_LastChunk(true)
success = compress.DecompressBd2(bdCompressed,bdDecompressed)
if (success == false)
    print compress.lastErrorText() + "\n";
    exit
end

originalText = bdDecompressed.getString("utf-8")
print originalText + "\n";