lib/invfs/zip.rb in invfs-0.2 vs lib/invfs/zip.rb in invfs-0.3

- old
+ new

@@ -1,75 +1,114 @@ #!ruby require "zip/filesystem" require_relative "../invfs" +using InVFS::Extensions + def InVFS.zip(*args) InVFS::Zip.new(*args) end -class InVFS::Zip - attr_reader :path, :zip, :zipfile +module InVFS + class Zip + attr_reader :path, :zip, :zipfile - def initialize(path) - @path = String(path) - @zip = Zip::File.open(@path) - @zipfile = @zip.file - end + def initialize(path) + @path = String(path) + @zip = ::Zip::File.open(@path) + @zipfile = @zip.file + end - # - # call-seq: - # to_path -> string - # - # REQUIRED method for VFS. - # - # This value MUST be not modifying in each objects. - # - def to_path - path - end + # + # call-seq: + # to_path -> string + # + # REQUIRED method for VFS. + # + # This value MUST be not modifying in each objects. + # + def to_path + path + end - # - # call-seq: - # file?(path) -> true OR false (OR nil) - # - # REQUIRED method for VFS. - # - def file?(path) - zipfile.file?(path) - end + # + # call-seq: + # file?(path) -> true OR false (OR nil) + # + # REQUIRED method for VFS. + # + def file?(path) + zipfile.file?(path) + end - # - # call-seq: - # size(path) -> integer for file size - # - # REQUIRED method for VFS. - # - def size(path) - zipfile.size(path) - end + # + # call-seq: + # size(path) -> integer for file size + # + # REQUIRED method for VFS. + # + def size(path) + zipfile.size(path) + end - # - # call-seq: - # read(path) -> string - # - # REQUIRED method for VFS. - # - def read(path) - zipfile.read(path) - end + # + # call-seq: + # read(path) -> string + # + # REQUIRED method for VFS. + # + def read(path) + zipfile.read(path) + end - # - # optional method for VFS. - # - def to_s - %(#{path} (#{self.class})) - end + # + # optional method for VFS. + # + def to_s + %(#{path} (#{self.class})) + end - def inspect - %(#<#{self.class}:#{path}>) + def inspect + %(#<#{self.class}:#{path}>) + end + + def pretty_print(q) + q.text inspect + end end - def pretty_print(q) - q.text inspect + class Zip + # + # VFS Handler Methods + ; + + # + # call-seq: + # probe(file) -> true or false + # + # REQUIRED method for VFS Handler. + # + # Check available as VFS. + # + def Zip.probe(file) + file.readat(0, 4) == "PK\x03\x04" + end + + # + # call-seq: + # open(file) -> VFS object + # + # REQUIRED method for VFS Handler. + # + # Open as VFS. + # + def Zip.open(file) + new file + end + + # + # Regist handler as VFS. + # + InVFS.regist self end end