class Zlib::GzipWriter
Public Class Methods
new(io, level=nil, strategy=nil)
click to toggle source
# File lib/pr/zlib.rb, line 1077 def initialize(io, level=nil, strategy=nil) level = Z_DEFAULT_COMPRESSION if level.nil? strategy = Z_DEFAULT_STRATEGY if strategy.nil? gzfile_new(DeflateFuncs, :gzfile_writer_end) @gz.level = level err = deflateInit2( @gz.z.stream, @gz.level, Z_DEFLATED, -MAX_WBITS, DEF_MEM_LEVEL, strategy ) if err != Z_OK raise_zlib_error(err, @gz.stream.msg) end @gz.io = io @gz.z.ZSTREAM_READY() end
open(filename, level=Z_DEFAULT_COMPRESSION, strategy=Z_DEFAULT_STRATEGY, &blk)
click to toggle source
# File lib/pr/zlib.rb, line 1073 def self.open(filename, level=Z_DEFAULT_COMPRESSION, strategy=Z_DEFAULT_STRATEGY, &blk) GzipWriter.gzfile_s_open(filename, 'wb', level, strategy, &blk) end
Public Instance Methods
<<(str)
click to toggle source
# File lib/pr/zlib.rb, line 1130 def <<(str) @gz.io << str end
comment=(str)
click to toggle source
# File lib/pr/zlib.rb, line 1056 def comment=(str) raise GzipFile::Error, "closed gzip stream" unless @gz.z.ZSTREAM_IS_READY() if (@gz.z.flags & GZFILE_FLAG_HEADER_FINISHED).nonzero? raise GzipFile::Error,"header is already written" end @gz.comment = str.dup end
flush(v_flush=Z_SYNC_FLUSH)
click to toggle source
# File lib/pr/zlib.rb, line 1101 def flush(v_flush=Z_SYNC_FLUSH) raise GzipFile::Error, "closed gzip stream" unless @gz.z.ZSTREAM_IS_READY() if v_flush != Z_NO_FLUSH @gz.z.zstream_run("", 0, v_flush) end gzfile_write_raw() if defined?(@gz.io.flush) @gz.io.flush() end self end
gzfile_writer_end()
click to toggle source
# File lib/pr/zlib.rb, line 1184 def gzfile_writer_end return if @gz.z.ZSTREAM_IS_CLOSING() @gz.z.flags |= ZSTREAM_FLAG_CLOSING begin gzfile_writer_end_run() ensure @gz.z.zstream_end() end end
gzfile_writer_end_run()
click to toggle source
# File lib/pr/zlib.rb, line 1173 def gzfile_writer_end_run if (@gz.z.flags & GZFILE_FLAG_HEADER_FINISHED).zero? gzfile_make_header() end @gz.z.zstream_run("", 0, Z_FINISH) gzfile_make_footer() gzfile_write_raw() return nil end
mtime=(mtime)
click to toggle source
# File lib/pr/zlib.rb, line 1035 def mtime=(mtime) raise GzipFile::Error, "closed gzip stream" unless @gz.z.ZSTREAM_IS_READY() if (@gz.z.flags & GZFILE_FLAG_HEADER_FINISHED).nonzero? raise GzipFile::Error,"header is already written" end @gz.mtime = mtime.to_i end
orig_name=(str)
click to toggle source
# File lib/pr/zlib.rb, line 1045 def orig_name=(str) raise GzipFile::Error, "closed gzip stream" unless @gz.z.ZSTREAM_IS_READY() if (@gz.z.flags & GZFILE_FLAG_HEADER_FINISHED).nonzero? raise GzipFile::Error,"header is already written" end ap = str[0.chr] @gz.orig_name = ap ? str[0,ap] : str.dup end
pos()
click to toggle source
# File lib/pr/zlib.rb, line 1066 def pos raise GzipFile::Error, "closed gzip stream" unless @gz.z.ZSTREAM_IS_READY() @gz.z.stream.total_in end
Also aliased as: tell
print(*arg)
click to toggle source
# File lib/pr/zlib.rb, line 1138 def print(*arg) @gz.io.print(*arg) end
printf(*arg)
click to toggle source
# File lib/pr/zlib.rb, line 1134 def printf(*arg) @gz.io.printf(*arg) end
putc(ch)
click to toggle source
# File lib/pr/zlib.rb, line 1124 def putc(ch) raise GzipFile::Error, "closed gzip stream" unless @gz.z.ZSTREAM_IS_READY() gzfile_write(ch.chr, 1) ch end
puts(str)
click to toggle source
# File lib/pr/zlib.rb, line 1142 def puts(str) @gz.io.puts(str) end
write(str)
click to toggle source
# File lib/pr/zlib.rb, line 1117 def write(str) raise GzipFile::Error, "closed gzip stream" unless @gz.z.ZSTREAM_IS_READY() str = str.to_s gzfile_write(str, str.length) str.length end
Private Instance Methods
gzfile_write(str,len)
click to toggle source
# File lib/pr/zlib.rb, line 1158 def gzfile_write(str,len) if (@gz.z.flags & GZFILE_FLAG_HEADER_FINISHED).zero? gzfile_make_header() end if (len > 0 || (@gz.z.flags & GZFILE_FLAG_SYNC)) @gz.crc = crc32(@gz.crc, str, len) @gz.z.zstream_run(str, len, (@gz.z.flags & GZFILE_FLAG_SYNC).nonzero? ? Z_SYNC_FLUSH : Z_NO_FLUSH) end gzfile_write_raw() end
gzfile_write_raw()
click to toggle source
# File lib/pr/zlib.rb, line 1146 def gzfile_write_raw if (@gz.z.buf.offset > 0) str = @gz.z.zstream_detach_buffer() @gz.io.write(str) if ((@gz.z.flags & GZFILE_FLAG_SYNC).nonzero? && defined?(@gz.io.flush)) @gz.io.flush() end end end