Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   */
  package org.jruby.ext.zlib;
  
  import java.util.List;
  import org.jruby.Ruby;
 
 @JRubyClass(name = "Zlib::GzipFile")
 public class RubyGzipFile extends RubyObject {
     @JRubyClass(name = "Zlib::GzipFile::Error", parent = "Zlib::Error")
     public static class Error {}
 
     @JRubyClass(name = "Zlib::GzipFile::CRCError", parent = "Zlib::GzipFile::Error")
     public static class CRCError extends Error {}
 
     @JRubyClass(name = "Zlib::GzipFile::NoFooter", parent = "Zlib::GzipFile::Error")
     public static class NoFooter extends Error {}
 
     @JRubyClass(name = "Zlib::GzipFile::LengthError", parent = "Zlib::GzipFile::Error")
     public static class LengthError extends Error {}
 
     static IRubyObject wrapBlock(ThreadContext contextRubyGzipFile instanceBlock block) {
         if (block.isGiven()) {
             try {
                 return block.yield(contextinstance);
             } finally {
                 if (!instance.isClosed()) {
                     instance.close();
                 }
             }
         }
         return instance;
     }
 
     static IRubyObject[] argsWithIo(IRubyObject ioIRubyObject[] args) {
         List<IRubyObjectnewArgs = new ArrayList<IRubyObject>();
         newArgs.add(io);
         for (IRubyObject arg : args) {
             if (arg == null) {
                 break;
             }
             newArgs.add(arg);
         }
         return newArgs.toArray(new IRubyObject[0]);
     }
 
     @JRubyMethod(meta = true)
     public static IRubyObject wrap(ThreadContext contextIRubyObject recvIRubyObject ioBlock block) {
         Ruby runtime = recv.getRuntime();
         RubyGzipFile instance;
 
         // TODO: People extending GzipWriter/reader will break.  Find better way here.
         if (recv == runtime.getModule("Zlib").getClass("GzipWriter")) {
             instance = JZlibRubyGzipWriter.newInstance(recvnew IRubyObject[]{io}, block);
         } else {
             instance = JZlibRubyGzipReader.newInstance(recvnew IRubyObject[]{io}, block);
         }
 
         return wrapBlock(contextinstanceblock);
     }
     protected static final ObjectAllocator GZIPFILE_ALLOCATOR = new ObjectAllocator() {
 
         public IRubyObject allocate(Ruby runtimeRubyClass klass) {
             return new RubyGzipFile(runtimeklass);
         }
     };
 
     @JRubyMethod(name = "new", meta = true)
     public static RubyGzipFile newInstance(IRubyObject recvBlock block) {
         RubyClass klass = (RubyClassrecv;
 
         RubyGzipFile result = (RubyGzipFileklass.allocate();
 
         result.callInit(new IRubyObject[0], block);
 
         return result;
     }
     protected boolean closed = false;
     protected boolean finished = false;
     protected byte osCode = .;
    protected int level = -1;
    protected RubyString nullFreeOrigName;
    protected RubyString nullFreeComment;
    protected IRubyObject realIo;
    protected RubyTime mtime;
    protected Encoding readEncoding;    // enc
    protected Encoding writeEncoding;   // enc2
    protected boolean sync = false;
    public RubyGzipFile(Ruby runtimeRubyClass type) {
        super(runtimetype);
         = RubyTime.newTime(runtimenew DateTime());
         = null;
         = null;
    }
    // c: gzfile_newstr
    protected RubyString newStr(Ruby runtimeByteList value) {
        if (runtime.is1_9()) {
            if ( == null) {
                // FIXME: MRI does initialize readEncoding to def external, but we are missing something in some
                // initialization cases where that would make this go bad.  Bandage until then.
                Encoding encoding =  == null ? runtime.getEncodingService().getAscii8bitEncoding() : ;
                return RubyString.newString(runtimevalueencoding);
            }
            return RubyString.newStringNoCopy(runtime, CharsetTranscoder.transcode(
                    runtime.getCurrentContext(), value,
                    runtime.getNil()));
        } 
        return RubyString.newString(runtimevalue);
    }
    @JRubyMethod(name = "os_code")
    public IRubyObject os_code() {
        return getRuntime().newFixnum( & 0xff);
    }
    @JRubyMethod(name = "closed?")
    public IRubyObject closed_p() {
        return  ? getRuntime().getTrue() : getRuntime().getFalse();
    }
    protected boolean isClosed() {
        return ;
    }
    @JRubyMethod(name = "orig_name")
    public IRubyObject orig_name() {
        if () {
            throw RubyZlib.newGzipFileError(getRuntime(), "closed gzip stream");
        }
        return  == null ? getRuntime().getNil() : ;
    }
    @JRubyMethod(name = "to_io")
    public IRubyObject to_io() {
        return ;
    }
    @JRubyMethod(name = "comment")
    public IRubyObject comment() {
        if () {
            throw RubyZlib.newGzipFileError(getRuntime(), "closed gzip stream");
        }
        return  == null ? getRuntime().getNil() : ;
    }
    @JRubyMethod(name = "crc")
    public IRubyObject crc() {
        return getRuntime().newFixnum(0);
    }
    @JRubyMethod(name = "mtime")
    public IRubyObject mtime() {
        return ;
    }
    @JRubyMethod(name = "sync")
    public IRubyObject sync() {
        return  ? getRuntime().getTrue() : getRuntime().getFalse();
    }
    @JRubyMethod(name = "finish")
    public IRubyObject finish() {
        if (!) {
            //io.finish();
        }
         = true;
        return ;
    }
    @JRubyMethod(name = "close")
    public IRubyObject close() {
        return null;
    }
    @JRubyMethod(name = "level")
    public IRubyObject level() {
        return getRuntime().newFixnum();
    }
    @JRubyMethod(name = "sync=", required = 1)
    public IRubyObject set_sync(IRubyObject arg) {
         = ((RubyBooleanarg).isTrue();
        return  ? getRuntime().getTrue() : getRuntime().getFalse();
    }
New to GrepCode? Check out our FAQ X