epitools 0.1.3 → 0.1.4
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/LICENSE +10 -17
- data/README.rdoc +16 -14
- data/VERSION +1 -1
- data/epitools.gemspec +11 -8
- data/lib/epitools.rb +1 -0
- data/lib/epitools/zopen.rb +30 -0
- data/spec/zopen_spec.rb +49 -0
- metadata +10 -7
data/LICENSE
CHANGED
@@ -1,20 +1,13 @@
|
|
1
|
-
|
1
|
+
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
2
|
+
Version 2, December 2004
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
the following conditions:
|
4
|
+
Copyright (C) 2004 Sam Hocevar
|
5
|
+
14 rue de Plaisance, 75014 Paris, France
|
6
|
+
Everyone is permitted to copy and distribute verbatim or modified
|
7
|
+
copies of this license document, and changing it is allowed as long
|
8
|
+
as the name is changed.
|
10
9
|
|
11
|
-
|
12
|
-
|
10
|
+
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
11
|
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
13
12
|
|
14
|
-
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
13
|
+
0. You just DO WHAT THE FUCK YOU WANT TO.
|
data/README.rdoc
CHANGED
@@ -1,19 +1,21 @@
|
|
1
1
|
= epitools
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
bump version in a commit by itself I can ignore when I pull)
|
15
|
-
* Send me a pull request. Bonus points for topic branches.
|
3
|
+
Awesome collection of Ruby tools!
|
4
|
+
|
5
|
+
== Installing
|
6
|
+
|
7
|
+
gem install epitools
|
8
|
+
|
9
|
+
== Usage
|
10
|
+
|
11
|
+
This is basically a collection of enhancements to the ruby base types (Hash, Array,
|
12
|
+
Enumerable, etc.). To learn how it works, read the specs in spec/*.rb,
|
13
|
+
or check out the rdoc: http://rdoc.info/projects/epitron/epitools
|
16
14
|
|
17
15
|
== Copyright
|
18
16
|
|
19
|
-
Copyright (c) 2009 epitron
|
17
|
+
Copyright (c) 2009-2010 epitron
|
18
|
+
|
19
|
+
== License
|
20
|
+
|
21
|
+
Licensed under the WTFPL2. (See LICENSE for details.)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.4
|
data/epitools.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{epitools}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["epitron"]
|
12
|
-
s.date = %q{2010-05-
|
12
|
+
s.date = %q{2010-05-16}
|
13
13
|
s.description = %q{Miscellaneous utility libraries to make my life easier.}
|
14
14
|
s.email = %q{chris@ill-logic.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -37,6 +37,7 @@ Gem::Specification.new do |s|
|
|
37
37
|
"lib/epitools/rash.rb",
|
38
38
|
"lib/epitools/ratio.rb",
|
39
39
|
"lib/epitools/string_to_proc.rb",
|
40
|
+
"lib/epitools/zopen.rb",
|
40
41
|
"spec/basetypes_spec.rb",
|
41
42
|
"spec/lcs_spec.rb",
|
42
43
|
"spec/metaclass_spec.rb",
|
@@ -44,7 +45,8 @@ Gem::Specification.new do |s|
|
|
44
45
|
"spec/rash_spec.rb",
|
45
46
|
"spec/ratio_spec.rb",
|
46
47
|
"spec/spec.opts",
|
47
|
-
"spec/spec_helper.rb"
|
48
|
+
"spec/spec_helper.rb",
|
49
|
+
"spec/zopen_spec.rb"
|
48
50
|
]
|
49
51
|
s.homepage = %q{http://github.com/epitron/epitools}
|
50
52
|
s.rdoc_options = ["--charset=UTF-8"]
|
@@ -52,13 +54,14 @@ Gem::Specification.new do |s|
|
|
52
54
|
s.rubygems_version = %q{1.3.6}
|
53
55
|
s.summary = %q{NOT UTILS... METILS!}
|
54
56
|
s.test_files = [
|
55
|
-
"spec/
|
56
|
-
"spec/rash_spec.rb",
|
57
|
-
"spec/spec_helper.rb",
|
57
|
+
"spec/zopen_spec.rb",
|
58
58
|
"spec/lcs_spec.rb",
|
59
|
-
"spec/
|
59
|
+
"spec/rash_spec.rb",
|
60
|
+
"spec/metaclass_spec.rb",
|
60
61
|
"spec/ratio_spec.rb",
|
61
|
-
"spec/
|
62
|
+
"spec/permutations_spec.rb",
|
63
|
+
"spec/spec_helper.rb",
|
64
|
+
"spec/basetypes_spec.rb"
|
62
65
|
]
|
63
66
|
|
64
67
|
if s.respond_to? :specification_version then
|
data/lib/epitools.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'zlib'
|
2
|
+
|
3
|
+
#
|
4
|
+
# A mutation of "open" that lets you read/write gzip files, as well as
|
5
|
+
# regular files. (NOTE: gzip detection is purely based on filename.)
|
6
|
+
#
|
7
|
+
def zopen(filename, mode="r")
|
8
|
+
|
9
|
+
file = open(filename, mode)
|
10
|
+
|
11
|
+
if filename =~ /\.gz$/
|
12
|
+
case mode
|
13
|
+
when "r"
|
14
|
+
file = Zlib::GzipReader.new(file)
|
15
|
+
when "w"
|
16
|
+
file = Zlib::GzipWriter.new(file)
|
17
|
+
else
|
18
|
+
raise "Unknown mode: #{mode.inspect}. zopen only supports 'r' and 'w'."
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
if block_given?
|
23
|
+
result = yield(file)
|
24
|
+
file.close
|
25
|
+
result
|
26
|
+
else
|
27
|
+
file
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/spec/zopen_spec.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'epitools/zopen'
|
2
|
+
require 'tempfile'
|
3
|
+
|
4
|
+
describe "zopen()" do
|
5
|
+
|
6
|
+
before :all do
|
7
|
+
@data = ("x"*100+"\n") * 1000
|
8
|
+
@tmp = Tempfile.new("zopen_spec")
|
9
|
+
|
10
|
+
@plainfile = @tmp.path
|
11
|
+
@gzfile = "#{@tmp.path}.gz"
|
12
|
+
end
|
13
|
+
|
14
|
+
after :all do
|
15
|
+
File.unlink @plainfile
|
16
|
+
File.unlink @gzfile
|
17
|
+
end
|
18
|
+
|
19
|
+
it "writes/reads a gz" do
|
20
|
+
f = zopen(@gzfile, "w")
|
21
|
+
f.write(@data).should == @data.size
|
22
|
+
f.close
|
23
|
+
|
24
|
+
f = zopen(@gzfile, "r")
|
25
|
+
f.read.should == @data
|
26
|
+
f.close
|
27
|
+
end
|
28
|
+
|
29
|
+
it "writes/reads non-gz files" do
|
30
|
+
zopen(@plainfile, "w") {|f| f.write(@data) }
|
31
|
+
|
32
|
+
# readstyle
|
33
|
+
File.read(@plainfile).should == zopen(@plainfile).read
|
34
|
+
|
35
|
+
# blockstyle
|
36
|
+
open(@plainfile){|f| f.read }.should == zopen(@plainfile){|f| f.read }
|
37
|
+
end
|
38
|
+
|
39
|
+
it "is enumerable" do
|
40
|
+
zopen(@gzfile) do |f|
|
41
|
+
f.respond_to?(:each).should == true
|
42
|
+
f.respond_to?(:map).should == true
|
43
|
+
f.respond_to?(:inject).should == true
|
44
|
+
|
45
|
+
f.all?{|line| line =~ /^x+$/ }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 4
|
9
|
+
version: 0.1.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- epitron
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-05-
|
17
|
+
date: 2010-05-16 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -61,6 +61,7 @@ files:
|
|
61
61
|
- lib/epitools/rash.rb
|
62
62
|
- lib/epitools/ratio.rb
|
63
63
|
- lib/epitools/string_to_proc.rb
|
64
|
+
- lib/epitools/zopen.rb
|
64
65
|
- spec/basetypes_spec.rb
|
65
66
|
- spec/lcs_spec.rb
|
66
67
|
- spec/metaclass_spec.rb
|
@@ -69,6 +70,7 @@ files:
|
|
69
70
|
- spec/ratio_spec.rb
|
70
71
|
- spec/spec.opts
|
71
72
|
- spec/spec_helper.rb
|
73
|
+
- spec/zopen_spec.rb
|
72
74
|
has_rdoc: true
|
73
75
|
homepage: http://github.com/epitron/epitools
|
74
76
|
licenses: []
|
@@ -100,10 +102,11 @@ signing_key:
|
|
100
102
|
specification_version: 3
|
101
103
|
summary: NOT UTILS... METILS!
|
102
104
|
test_files:
|
103
|
-
- spec/
|
105
|
+
- spec/zopen_spec.rb
|
106
|
+
- spec/lcs_spec.rb
|
104
107
|
- spec/rash_spec.rb
|
108
|
+
- spec/metaclass_spec.rb
|
109
|
+
- spec/ratio_spec.rb
|
110
|
+
- spec/permutations_spec.rb
|
105
111
|
- spec/spec_helper.rb
|
106
|
-
- spec/lcs_spec.rb
|
107
112
|
- spec/basetypes_spec.rb
|
108
|
-
- spec/ratio_spec.rb
|
109
|
-
- spec/metaclass_spec.rb
|