FreedomCoder-rubyzip 0.9.2 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/NEWS +148 -0
- data/lib/zip/ioextras.rb +165 -0
- data/lib/zip/stdrubyext.rb +111 -0
- data/lib/zip/tempfile_bugfixed.rb +195 -0
- data/lib/zip/zip.rb +1854 -0
- data/lib/zip/zipfilesystem.rb +610 -0
- data/lib/zip/ziprequire.rb +90 -0
- metadata +12 -3
@@ -0,0 +1,90 @@
|
|
1
|
+
# With ziprequire you can load ruby modules from a zip file. This means
|
2
|
+
# ruby's module include path can include zip-files.
|
3
|
+
#
|
4
|
+
# The following example creates a zip file with a single entry
|
5
|
+
# <code>log/simplelog.rb</code> that contains a single function
|
6
|
+
# <code>simpleLog</code>:
|
7
|
+
#
|
8
|
+
# require 'zip/zipfilesystem'
|
9
|
+
#
|
10
|
+
# Zip::ZipFile.open("my.zip", true) {
|
11
|
+
# |zf|
|
12
|
+
# zf.file.open("log/simplelog.rb", "w") {
|
13
|
+
# |f|
|
14
|
+
# f.puts "def simpleLog(v)"
|
15
|
+
# f.puts ' Kernel.puts "INFO: #{v}"'
|
16
|
+
# f.puts "end"
|
17
|
+
# }
|
18
|
+
# }
|
19
|
+
#
|
20
|
+
# To use the ruby module stored in the zip archive simply require
|
21
|
+
# <code>zip/ziprequire</code> and include the <code>my.zip</code> zip
|
22
|
+
# file in the module search path. The following command shows one
|
23
|
+
# way to do this:
|
24
|
+
#
|
25
|
+
# ruby -rzip/ziprequire -Imy.zip -e " require 'log/simplelog'; simpleLog 'Hello world' "
|
26
|
+
|
27
|
+
#$: << 'data/rubycode.zip' << 'data/rubycode2.zip'
|
28
|
+
|
29
|
+
|
30
|
+
require 'zip/zip'
|
31
|
+
|
32
|
+
class ZipList #:nodoc:all
|
33
|
+
def initialize(zipFileList)
|
34
|
+
@zipFileList = zipFileList
|
35
|
+
end
|
36
|
+
|
37
|
+
def get_input_stream(entry, &aProc)
|
38
|
+
@zipFileList.each {
|
39
|
+
|zfName|
|
40
|
+
Zip::ZipFile.open(zfName) {
|
41
|
+
|zf|
|
42
|
+
begin
|
43
|
+
return zf.get_input_stream(entry, &aProc)
|
44
|
+
rescue Errno::ENOENT
|
45
|
+
end
|
46
|
+
}
|
47
|
+
}
|
48
|
+
raise Errno::ENOENT,
|
49
|
+
"No matching entry found in zip files '#{@zipFileList.join(', ')}' "+
|
50
|
+
" for '#{entry}'"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
module Kernel #:nodoc:all
|
56
|
+
alias :oldRequire :require
|
57
|
+
|
58
|
+
def require(moduleName)
|
59
|
+
zip_require(moduleName) || oldRequire(moduleName)
|
60
|
+
end
|
61
|
+
|
62
|
+
def zip_require(moduleName)
|
63
|
+
return false if already_loaded?(moduleName)
|
64
|
+
get_resource(ensure_rb_extension(moduleName)) {
|
65
|
+
|zis|
|
66
|
+
eval(zis.read); $" << moduleName
|
67
|
+
}
|
68
|
+
return true
|
69
|
+
rescue Errno::ENOENT => ex
|
70
|
+
return false
|
71
|
+
end
|
72
|
+
|
73
|
+
def get_resource(resourceName, &aProc)
|
74
|
+
zl = ZipList.new($:.grep(/\.zip$/))
|
75
|
+
zl.get_input_stream(resourceName, &aProc)
|
76
|
+
end
|
77
|
+
|
78
|
+
def already_loaded?(moduleName)
|
79
|
+
moduleRE = Regexp.new("^"+moduleName+"(\.rb|\.so|\.dll|\.o)?$")
|
80
|
+
$".detect { |e| e =~ moduleRE } != nil
|
81
|
+
end
|
82
|
+
|
83
|
+
def ensure_rb_extension(aString)
|
84
|
+
aString.sub(/(\.rb)?$/i, ".rb")
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
# Copyright (C) 2002 Thomas Sondergaard
|
89
|
+
# rubyzip is free software; you can redistribute it and/or
|
90
|
+
# modify it under the terms of the ruby license.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: FreedomCoder-rubyzip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Sondergaard
|
@@ -21,8 +21,17 @@ extensions: []
|
|
21
21
|
|
22
22
|
extra_rdoc_files:
|
23
23
|
- README
|
24
|
-
files:
|
25
|
-
|
24
|
+
files:
|
25
|
+
- README
|
26
|
+
- NEWS
|
27
|
+
- lib
|
28
|
+
- lib/zip
|
29
|
+
- lib/zip/ioextras.rb
|
30
|
+
- lib/zip/stdrubyext.rb
|
31
|
+
- lib/zip/tempfile_bugfixed.rb
|
32
|
+
- lib/zip/zip.rb
|
33
|
+
- lib/zip/zipfilesystem.rb
|
34
|
+
- lib/zip/ziprequire.rb
|
26
35
|
has_rdoc: true
|
27
36
|
homepage: http://rubyzip.sourceforge.net/
|
28
37
|
post_install_message:
|