Skip to content

aidansteele/lzo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LZO Ruby gem

Build Status

Wikipedia:

Lempel–Ziv–Oberhumer (LZO) is a lossless data compression algorithm that is focused on decompression speed.

It's an alternative to Gzip, essentially. This gem exists because the previous Ruby LZO gem (lzoruby) hasn't been updated for 5 years and doesn't support LZOP (as generated by the lzop utility) or JRuby. We use the ffi gem to provide VM-agnostic bindings to the LZO library.

Installation

The LZO library is not bundled with this gem. It must be installed beforehand. Here's how you can do that on various popular OSes:

  • OS X: brew install lzo
  • Ubuntu: apt-get install liblzo2-2 (liblzo2-dev works fine too)
  • Fedora: yum install lzo (or lzo-devel)

Then the bog-standard gem install lzo - you know the drill.

Usage

LZO.decompress(string_or_io) # returns String
LZO.compress(string_or_io) # returns String

file = File.open('/path/to/file.lzo', 'rb')
reader = LZO::LzopDecompressor.new file
reader.name # => "file.txt"
reader.mode # => 0100644
reader.mtime # => 2016-02-03 14:29:36 +1100
reader.method # => :M_LZO1X_1
reader.level # => 5
reader.read(10) # => "The quick "

output = File.open('/path/to/output.lzo', 'wb')
writer = LZO::LzopCompressor.new output, name: 'output.txt', mode: 0100644, mtime: Time.now
writer.write "first chunk of data"
writer.write "second chunk of data"
writer.close

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages