diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/zip.cr | 225 |
1 files changed, 114 insertions, 111 deletions
@@ -31,22 +31,22 @@ require "zlib" # # Reading from a zip file: # -# # create output MemoryIO -# mem_io = MemoryIO.new +# # create output MemoryIO +# mem_io = MemoryIO.new # -# # read from "foo.zip" -# Zip.read("foo.zip") do |zip| -# # read contents of "bar.txt" in "foo.zip" into mem_io -# zip["bar.txt"].read(mem_io) -# end +# # read from "foo.zip" +# Zip.read("foo.zip") do |zip| +# # read contents of "bar.txt" in "foo.zip" into mem_io +# zip["bar.txt"].read(mem_io) +# end # # Writing to a zip file: # -# # write to "foo.zip" -# Zip.write("foo.zip") do |zip| -# # create "bar.txt" with contents "hello!" -# zip.add("bar.txt", "hello!") -# end +# # write to "foo.zip" +# Zip.write("foo.zip") do |zip| +# # create "bar.txt" with contents "hello!" +# zip.add("bar.txt", "hello!") +# end # module Zip # @@ -291,6 +291,9 @@ module Zip # # Wrapper class for exceptions. # + # You shouldn't need to instantiate this class directly; it is raised + # by other classes on error. + # class Error < Exception end @@ -963,13 +966,13 @@ module Zip # # Example: # - # Zip.write("foo.zip") do |zip| - # # add "bar.txt" - # zip.add_file("bar.txt", "/path/to/bar.txt") + # Zip.write("foo.zip") do |zip| + # # add "bar.txt" + # zip.add_file("bar.txt", "/path/to/bar.txt") # - # # print number of bytes written so far - # puts "bytes written so far: #{zip.bytes_written}" - # end + # # print number of bytes written so far + # puts "bytes written so far: #{zip.bytes_written}" + # end # def bytes_written : UInt32 # return total number of bytes written @@ -1005,14 +1008,14 @@ module Zip # # Example: # - # # create IO from "/path/to/bar.txt" - # File.open("/path/to/bar.txt, "rb") do |io| - # # write to "foo.zip" - # Zip.write("foo.zip") do |zip| - # # add "bar.txt" with contents of given IO - # zip.add("bar.txt", io) + # # create IO from "/path/to/bar.txt" + # File.open("/path/to/bar.txt, "rb") do |io| + # # write to "foo.zip" + # Zip.write("foo.zip") do |zip| + # # add "bar.txt" with contents of given IO + # zip.add("bar.txt", io) + # end # end - # end # def add( path : String, @@ -1053,11 +1056,11 @@ module Zip # # Example: # - # # write to "foo.zip" - # Zip.write("foo.zip") do |zip| - # # add "bar.txt" with contents "hello!" - # zip.add("bar.txt", "hello!") - # end + # # write to "foo.zip" + # Zip.write("foo.zip") do |zip| + # # add "bar.txt" with contents "hello!" + # zip.add("bar.txt", "hello!") + # end # def add( path : String, @@ -1075,11 +1078,11 @@ module Zip # # Example: # - # # write to "foo.zip" - # Zip.write("foo.zip") do |zip| - # # add local file "/path/to/bar.txt" as "bar.txt" - # zip.add_file("bar.txt", "/path/to/bar.txt") - # end + # # write to "foo.zip" + # Zip.write("foo.zip") do |zip| + # # add local file "/path/to/bar.txt" as "bar.txt" + # zip.add_file("bar.txt", "/path/to/bar.txt") + # end # def add_file( path : String, @@ -1150,13 +1153,13 @@ module Zip # # Example: # - # # create output IO - # File.open("foo.zip", "wb") do |io| - # Zip.write(io) do |zip| - # # add "bar.txt" with contents "hello!" - # zip.add("bar.txt", "hello!") + # # create output IO + # File.open("foo.zip", "wb") do |io| + # Zip.write(io) do |zip| + # # add "bar.txt" with contents "hello!" + # zip.add("bar.txt", "hello!") + # end # end - # end # def self.write( io : IO, @@ -1187,11 +1190,11 @@ module Zip # # Example: # - # # create "foo.zip" - # Zip.write("foo.zip") do |zip| - # # add "bar.txt" with contents "hello!" - # zip.add("bar.txt", "hello!") - # end + # # create "foo.zip" + # Zip.write("foo.zip") do |zip| + # # add "bar.txt" with contents "hello!" + # zip.add("bar.txt", "hello!") + # end # def self.write( path : String, @@ -1237,11 +1240,11 @@ module Zip # # Example: # - # # open "foo.zip" - # Zip.read("foo.zip") do |zip| - # # get extra data associated with "bar.txt" - # extras = zip["bar.txt"].extras - # end + # # open "foo.zip" + # Zip.read("foo.zip") do |zip| + # # get extra data associated with "bar.txt" + # extras = zip["bar.txt"].extras + # end # class Extra property :code, :data @@ -1273,17 +1276,17 @@ module Zip # # Example: # - # # create MemoryIO - # io = MemoryIO.new + # # create MemoryIO + # io = MemoryIO.new # - # # open "foo.zip" - # Zip.read("foo.zip") do |zip| - # # get "bar.txt" entry from "foo.zip" - # e = zip["bar.txt"] + # # open "foo.zip" + # Zip.read("foo.zip") do |zip| + # # get "bar.txt" entry from "foo.zip" + # e = zip["bar.txt"] # - # # read contents of "bar.txt" into io - # e.read(io) - # end + # # read contents of "bar.txt" into io + # e.read(io) + # end # class Entry include TimeHelper @@ -1402,10 +1405,10 @@ module Zip # # Example: # - # Zip.read("foo.zip") do |zip| - # size = zip["bar.txt"].size - # puts "bar.txt is #{size} bytes." - # end + # Zip.read("foo.zip") do |zip| + # size = zip["bar.txt"].size + # puts "bar.txt is #{size} bytes." + # end # def size : UInt32 @uncompressed_size @@ -1435,14 +1438,14 @@ module Zip # # Example: # - # # open "output-bar.txt" for writing - # File.open("output-bar.txt", "wb") do |io| - # # open archive "./foo.zip" - # Zip.read("foo.zip") do |zip| - # # write contents of "bar.txt" to "output-bar.txt" - # zip["foo.txt"].read(io) + # # open "output-bar.txt" for writing + # File.open("output-bar.txt", "wb") do |io| + # # open archive "./foo.zip" + # Zip.read("foo.zip") do |zip| + # # write contents of "bar.txt" to "output-bar.txt" + # zip["foo.txt"].read(io) + # end # end - # end # def read(dst_io : IO) : UInt32 # create buffer for local header @@ -1502,11 +1505,11 @@ module Zip # # Example: # - # # open "./foo.zip" - # Zip.read("./foo.zip") do |zip| - # # get array of local extra attributes from "bar.txt" - # extras = zip["bar.txt"].local_extras - # end + # # open "./foo.zip" + # Zip.read("./foo.zip") do |zip| + # # get array of local extra attributes from "bar.txt" + # extras = zip["bar.txt"].local_extras + # end # def local_extras : Array(Extra) unless @local_extras @@ -1709,9 +1712,9 @@ module Zip # # Example: # - # # get bar.txt and read it into memory io - # io = MemoryIO.new - # zip["bar.txt"].read(io) + # # get bar.txt and read it into memory io + # io = MemoryIO.new + # zip["bar.txt"].read(io) # def [](path : String) : Entry paths[path] @@ -1722,11 +1725,11 @@ module Zip # # Example: # - # # read bar.txt into memory io if it exists - # if e = zip["bar.txt"]? - # io = MemoryIO.new - # e.read(io) - # end + # # read bar.txt into memory io if it exists + # if e = zip["bar.txt"]? + # io = MemoryIO.new + # e.read(io) + # end # def []?(path : String) : Entry? paths[path]? @@ -1737,9 +1740,9 @@ module Zip # # Example: # - # # read third entry from archive into memory io - # io = MemoryIO.new - # zip[2].read(io) + # # read third entry from archive into memory io + # io = MemoryIO.new + # zip[2].read(io) # def [](id : Int) : Entry @entries[id] @@ -1750,11 +1753,11 @@ module Zip # # Example: # - # # read third entry from archive into memory io - # if e = zip[2] - # io = MemoryIO.new - # e.read(io) - # end + # # read third entry from archive into memory io + # if e = zip[2]? + # io = MemoryIO.new + # e.read(io) + # end # def []?(id : Int) : Entry? @entries[id]? @@ -1858,13 +1861,13 @@ module Zip # # Example: # - # # create memory io for contents of "bar.txt" - # io = MemoryIO.new + # # create memory io for contents of "bar.txt" + # io = MemoryIO.new # - # # read "bar.txt" from "./foo.zip" - # Zip.read(File.open("./foo.zip", "rb")) do |zip| - # zip["bar.txt"].read(io) - # end + # # read "bar.txt" from "foo.zip" + # Zip.read(File.open("foo.zip", "rb")) do |zip| + # zip["bar.txt"].read(io) + # end # def self.read( io : IO, @@ -1879,14 +1882,14 @@ module Zip # # Example: # - # # create memory io for contents of "bar.txt" - # io = MemoryIO.new + # # create memory io for contents of "bar.txt" + # io = MemoryIO.new # - # # extract "bar.txt" from zip archive in Slice some_slice and - # # save it to MemoryIO - # Zip.read(some_slice) do |zip| - # zip["bar.txt"].read(io) - # end + # # extract "bar.txt" from zip archive in Slice some_slice and + # # save it to MemoryIO + # Zip.read(some_slice) do |zip| + # zip["bar.txt"].read(io) + # end # def self.read( slice : Bytes, @@ -1901,13 +1904,13 @@ module Zip # # Example: # - # # create memory io for contents of "bar.txt" - # io = MemoryIO.new + # # create memory io for contents of "bar.txt" + # io = MemoryIO.new # - # # extract "bar.txt" from "./foo.zip" and save it to MemoryIO - # Zip.read("./foo.zip") do |zip| - # zip["bar.txt"].read(io) - # end + # # extract "bar.txt" from "foo.zip" and save it to MemoryIO + # Zip.read("foo.zip") do |zip| + # zip["bar.txt"].read(io) + # end # def self.read( path : String, |