duct_tape 0.0.4 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/ext/pathname.rb CHANGED
@@ -7,7 +7,7 @@ class Pathname
7
7
  def self.which(cmd)
8
8
  paths = ENV['PATH'].split(File::PATH_SEPARATOR).uniq
9
9
  exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
10
- names = exts.map { |ext| "#{cmd}#{ext}" }
10
+ names = form_name_list(cmd, {:extensions => exts})
11
11
  return do_search(paths, *names) { |f| f.executable? }
12
12
  end
13
13
 
@@ -17,17 +17,25 @@ class Pathname
17
17
  '/usr/local/lib',
18
18
  '/usr/local/libdata',
19
19
  '/opt/local/lib',
20
+ '/usr/lib/x86_64-linux-gnu',
20
21
  '/usr/lib64',
21
22
  '/usr/lib',
22
23
  '/usr/X11/lib',
23
24
  '/usr/share',
24
- ].uniq
25
- names = [lib, "#{lib}.so", "lib#{lib}", "lib#{lib}.so"]
25
+ ]
26
+ prefixes = [
27
+ "lib"
28
+ ]
29
+ extensions = [
30
+ "",
31
+ ".so"
32
+ ]
26
33
 
27
34
  if detect_os[:platform] == "windows"
28
- names = [
29
- lib, "#{lib}.dll", "#{lib}.dll.a",
30
- "lib#{lib}", "lib#{lib}.dll", "lib#{lib}.dll.a"
35
+ extensions = [
36
+ "",
37
+ ".dll",
38
+ ".dll.a"
31
39
  ]
32
40
  paths = [
33
41
  calling_method_dirname,
@@ -37,9 +45,14 @@ class Pathname
37
45
  ENV["SystemRoot"],
38
46
  ].compact.uniq
39
47
  paths |= ENV['PATH'].split(File::PATH_SEPARATOR).uniq
48
+ elsif detect_os[:platform] == "darwin"
49
+ extensions << ".dylib"
40
50
  end
51
+ names = form_name_list(lib, {:prefixes => prefixes, :extensions => extensions})
41
52
 
42
- return do_search(paths, *names) { |f| f.readable? && f.file? }
53
+ return do_search(paths, *names) do |f|
54
+ f.readable? && f.file? && extensions.any? { |ext| f =~ %r{#{Regexp.escape(ext)}\z} }
55
+ end
43
56
  end
44
57
 
45
58
  def self.header(hdr)
@@ -50,7 +63,13 @@ class Pathname
50
63
  RbConfig::CONFIG["includedir"],
51
64
  RbConfig::CONFIG["oldincludedir"],
52
65
  ].compact.uniq
53
- names = [hdr, hdr + ".h", hdr + ".hpp"]
66
+ extensions = [
67
+ ".h",
68
+ ".hh",
69
+ ".hxx",
70
+ ".hpp"
71
+ ]
72
+ names = form_name_list(hdr, {:extensions => extensions})
54
73
  return do_search(paths, *names) { |f| f.readable? && f.file? }
55
74
  end
56
75
 
@@ -100,15 +119,38 @@ class Pathname
100
119
 
101
120
  private
102
121
 
122
+ def self.form_name_list(name, opts={})
123
+ exts = opts[:exts] || opts[:extensions] || []
124
+ pfxs = opts[:pfxs] || opts[:prefixes] || []
125
+ exts.delete("")
126
+ pfxs.delete("")
127
+ exts.unshift("")
128
+ pfxs.unshift("")
129
+
130
+ ret = []
131
+ (pfxs * exts).each { |pfx,ext| ret << [pfx, name, ext].join("") }
132
+ ret
133
+ end
134
+
103
135
  def self.do_search(paths, *try_names, &block)
104
136
  try_names.flatten!
105
137
  paths.each do |path|
106
138
  pn = Pathname.new(path)
107
- try_names.each do |name|
139
+ # Handle globs
140
+ globbed = try_names.map do |name|
141
+ if name["*"]
142
+ Dir.glob(pn + name)
143
+ else
144
+ name
145
+ end
146
+ end
147
+ globbed.flatten!
148
+ globbed.each do |name|
108
149
  file = pn + name
109
150
  return file if yield(file)
110
151
  end
111
152
  end
112
153
  nil
113
154
  end
155
+ private_class_method :do_search
114
156
  end
data/lib/ext/time.rb CHANGED
@@ -5,16 +5,25 @@ class Time
5
5
  mins = secs / 60
6
6
  hours = mins / 60
7
7
  days = hours / 24
8
+ weeks = days / 7
9
+ months = days / 30
10
+ years = days / 365
8
11
 
9
12
  secs = num if usecs
10
13
 
14
+ year_str = (years == 1 ? "year" : "years")
15
+ month_str = (months == 1 ? "month" : "months")
16
+ week_str = (weeks == 1 ? "week" : "weeks")
11
17
  day_str = (days == 1 ? "day" : "days")
12
18
  hour_str = (hours % 24 == 1 ? "hour" : "hours")
13
19
  min_str = (mins % 60 == 1 ? "minute" : "minutes")
14
20
  sec_str = (secs % 60 == 1 ? "second" : "seconds")
15
21
 
16
22
  str_ary = []
17
- str_ary << "#{days} #{day_str}" if days > 0
23
+ str_ary << "#{years} #{year_str}" if years > 0
24
+ str_ary << "#{months % 12} #{month_str}" if months > 0
25
+ str_ary << "#{weeks % 4} #{week_str}" if weeks > 0
26
+ str_ary << "#{days % 7} #{day_str}" if days > 0
18
27
  str_ary << "#{hours % 24} #{hour_str}" if hours > 0
19
28
  str_ary << "#{mins % 60} #{min_str}" if mins > 0
20
29
  str_ary << "#{secs % 60} #{sec_str}" if secs > 0
data/lib/ext/uri.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'pathname'
2
- require 'uri'
3
2
 
4
3
  class URI::Generic
5
4
  def relative_path?
@@ -13,4 +12,10 @@ class URI::Generic
13
12
  def relative_scheme?
14
13
  scheme.nil? && (!host.nil? || !path.empty?)
15
14
  end
15
+
16
+ def origin
17
+ ret = (scheme ? "#{scheme}://" : "//")
18
+ ret += hostname
19
+ ret += (port && port != default_port ? ":#{port}" : "")
20
+ end
16
21
  end
@@ -38,22 +38,22 @@ describe Containers::AutoassociativeArray, "#partial_match" do
38
38
  it "returns the matches with the most query matches" do
39
39
  aa = Containers::AutoassociativeArray.new
40
40
  aa << [1,2,3] << [2,3,4] << [3,4,5]
41
- aa.partial_match(1,4,5).should eq([3,4,5])
41
+ expect(aa.partial_match(1,4,5)).to eq([3,4,5])
42
42
  end
43
43
 
44
44
  it "returns all of the matches with the most query matches" do
45
45
  aa = Containers::AutoassociativeArray.new
46
46
  aa << [1,2,3] << [2,3,4] << [3,4,5]
47
- aa.partial_match(1,5).should eq([[1,2,3], [3,4,5]])
48
- aa.partial_match(1,3,5).should eq([[1,2,3], [3,4,5]])
49
- aa.partial_match(2,4).should eq([2,3,4])
47
+ expect(aa.partial_match(1,5)).to eq([[1,2,3], [3,4,5]])
48
+ expect(aa.partial_match(1,3,5)).to eq([[1,2,3], [3,4,5]])
49
+ expect(aa.partial_match(2,4)).to eq([2,3,4])
50
50
  end
51
51
 
52
52
  it "returns the matches with the most query matches with the most matches" do
53
53
  aa = Containers::AutoassociativeArray.new
54
54
  aa << [1,2,3] << [2,3,4] << [3,4,5]
55
- aa.partial_match(1,4).should eq([[2,3,4], [3,4,5]])
56
- aa.partial_match(2,5).should eq([[1,2,3], [2,3,4]])
55
+ expect(aa.partial_match(1,4)).to eq([[2,3,4], [3,4,5]])
56
+ expect(aa.partial_match(2,5)).to eq([[1,2,3], [2,3,4]])
57
57
  end
58
58
  end
59
59
 
@@ -7,21 +7,21 @@ describe Array, "#deep_merge" do
7
7
  it "remains unchanged" do
8
8
  ary = [1,2,3,4,5]
9
9
  ary.deep_merge([6,7,8])
10
- ary.should eq([1,2,3,4,5])
10
+ expect(ary).to eq([1,2,3,4,5])
11
11
  end
12
12
 
13
13
  it "merges flat arrays properly" do
14
14
  ary = [1,2,3,4,5]
15
15
  val = ary.deep_merge([4,5,6])
16
- val.should eq([1,2,3,4,5,6])
17
- (val.__id__ == ary.__id__).should be_false
16
+ expect(val).to eq([1,2,3,4,5,6])
17
+ expect((val.__id__ == ary.__id__)).to be_false
18
18
  end
19
19
 
20
20
  it "merges nested arrays properly" do
21
21
  ary = [1,2,[3,4,5]]
22
22
  val = ary.deep_merge([3,4,[5,6,7]])
23
- val.should eq([1,2,[3,4,5,6,7],3,4])
24
- (val.__id__ == ary.__id__).should be_false
23
+ expect(val).to eq([1,2,[3,4,5,6,7],3,4])
24
+ expect((val.__id__ == ary.__id__)).to be_false
25
25
  end
26
26
  end
27
27
 
@@ -32,33 +32,33 @@ describe Array, "#deep_merge!" do
32
32
  it "changes" do
33
33
  ary = [1,2,3,4,5]
34
34
  val = ary.deep_merge!([6,7,8])
35
- ary.should eq([1,2,3,4,5,6,7,8])
36
- (val.__id__ == ary.__id__).should be_true
35
+ expect(ary).to eq([1,2,3,4,5,6,7,8])
36
+ expect((val.__id__ == ary.__id__)).to be_true
37
37
  end
38
38
 
39
39
  it "returns nil if nothing was changed" do
40
40
  ary = [1,2,3,4,5]
41
41
  val = ary.deep_merge!([4,5])
42
- val.should be_nil
42
+ expect(val).to be_nil
43
43
  end
44
44
 
45
45
  it "returns self if it changed" do
46
46
  ary = [1,2,3,4,5]
47
47
  val = ary.deep_merge!([4,5,6])
48
- val.should eq([1,2,3,4,5,6])
49
- (val.__id__ == ary.__id__).should be_true
48
+ expect(val).to eq([1,2,3,4,5,6])
49
+ expect((val.__id__ == ary.__id__)).to be_true
50
50
  end
51
51
 
52
52
  it "merges flat arrays properly" do
53
53
  ary = [1,2,3,4,5]
54
54
  ary.deep_merge!([4,5,6])
55
- ary.should eq([1,2,3,4,5,6])
55
+ expect(ary).to eq([1,2,3,4,5,6])
56
56
  end
57
57
 
58
58
  it "merges nested arrays properly" do
59
59
  ary = [1,2,[3,4,5]]
60
60
  ary.deep_merge!([3,4,[5,6,7]])
61
- ary.should eq([1,2,[3,4,5,6,7],3,4])
61
+ expect(ary).to eq([1,2,[3,4,5,6,7],3,4])
62
62
  end
63
63
  end
64
64
 
@@ -69,34 +69,34 @@ describe Array, "#*" do
69
69
  it "remains unchanged" do
70
70
  ary = [1,2,3]
71
71
  val1 = ary * 2; val2 = ary * ","; val3 = ary * ary
72
- ary.should eq([1,2,3])
73
- (val1.__id__ == ary.__id__).should be_false
74
- (val2.__id__ == ary.__id__).should be_false
75
- (val3.__id__ == ary.__id__).should be_false
72
+ expect(ary).to eq([1,2,3])
73
+ expect((val1.__id__ == ary.__id__)).to be_false
74
+ expect((val2.__id__ == ary.__id__)).to be_false
75
+ expect((val3.__id__ == ary.__id__)).to be_false
76
76
  end
77
77
 
78
78
  it "concats correctly" do
79
79
  ary = [1,2,3]
80
80
 
81
- (ary * 0).should eq([])
82
- (ary * 1).should eq([1,2,3])
83
- (ary * 2).should eq([1,2,3,1,2,3])
81
+ expect((ary * 0)).to eq([])
82
+ expect((ary * 1)).to eq([1,2,3])
83
+ expect((ary * 2)).to eq([1,2,3,1,2,3])
84
84
  end
85
85
 
86
86
  it "joins correctly" do
87
87
  ary = [1,2,3]
88
88
 
89
- (ary * "").should eq("123")
90
- (ary * ",").should eq("1,2,3")
89
+ expect((ary * "")).to eq("123")
90
+ expect((ary * ",")).to eq("1,2,3")
91
91
  end
92
92
 
93
93
  it "cross-multiplies correctly" do
94
94
  ary = [0,1]
95
95
 
96
- (ary * []).should eq([])
97
- (ary * [0]).should eq([[0,0],[1,0]])
98
- (ary * ary).should eq([[0,0],[0,1],[1,0],[1,1]])
99
- (ary * [0,1,2]).should eq([[0,0],[0,1],[0,2],[1,0],[1,1],[1,2]])
96
+ expect((ary * [])).to eq([])
97
+ expect((ary * [0])).to eq([[0,0],[1,0]])
98
+ expect((ary * ary)).to eq([[0,0],[0,1],[1,0],[1,1]])
99
+ expect((ary * [0,1,2])).to eq([[0,0],[0,1],[0,2],[1,0],[1,1],[1,2]])
100
100
  end
101
101
  end
102
102
 
@@ -107,17 +107,17 @@ describe Array, "#**" do
107
107
  it "remains unchanged" do
108
108
  ary = [0,1]
109
109
  val = ary ** 2
110
- ary.should eq([0,1])
111
- (val.__id__ == ary.__id__).should be_false
110
+ expect(ary).to eq([0,1])
111
+ expect((val.__id__ == ary.__id__)).to be_false
112
112
  end
113
113
 
114
114
  it "multiplies correctly" do
115
115
  ary = [0,1]
116
- (ary ** -1).should eq([])
117
- (ary ** 0).should eq([])
118
- (ary ** 1).should eq([[0],[1]])
119
- (ary ** 2).should eq([[0,0],[0,1],[1,0],[1,1]])
120
- (ary ** 3).should eq([[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1]])
116
+ expect((ary ** -1)).to eq([])
117
+ expect((ary ** 0)).to eq([])
118
+ expect((ary ** 1)).to eq([[0],[1]])
119
+ expect((ary ** 2)).to eq([[0,0],[0,1],[1,0],[1,1]])
120
+ expect((ary ** 3)).to eq([[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1]])
121
121
  end
122
122
  end
123
123
 
@@ -128,14 +128,14 @@ describe Array, "#uniq_by" do
128
128
  it "remains unchanged" do
129
129
  ary = [0,0]
130
130
  val = ary.uniq_by { |i| i }
131
- ary.should eq([0,0])
132
- (val.__id__ == ary.__id__).should be_false
131
+ expect(ary).to eq([0,0])
132
+ expect((val.__id__ == ary.__id__)).to be_false
133
133
  end
134
134
 
135
135
  it "filters by the return value of the block" do
136
136
  ary = [0,1]
137
137
  val = ary.uniq_by { |i| true }
138
- val.should eq([0])
138
+ expect(val).to eq([0])
139
139
  end
140
140
  end
141
141
 
@@ -146,28 +146,28 @@ describe Array, "#unanimous?" do
146
146
  it "remains unchanged" do
147
147
  ary = [0,0]
148
148
  val = ary.unanimous?
149
- ary.should eq([0,0])
150
- (val.__id__ == ary.__id__).should be_false
149
+ expect(ary).to eq([0,0])
150
+ expect((val.__id__ == ary.__id__)).to be_false
151
151
  end
152
152
 
153
153
  it "returns true and false with no argument and no block" do
154
- [0,0].unanimous?.should be_true
155
- [0,1].unanimous?.should be_false
154
+ expect([0,0].unanimous?).to be_true
155
+ expect([0,1].unanimous?).to be_false
156
156
  end
157
157
 
158
158
  it "returns true and false with an argument and no block" do
159
- [0,0].unanimous?(0).should be_true
160
- [0,0].unanimous?(1).should be_false
159
+ expect([0,0].unanimous?(0)).to be_true
160
+ expect([0,0].unanimous?(1)).to be_false
161
161
  end
162
162
 
163
163
  it "returns true and false with no argument and with a block" do
164
- [0,0].unanimous? { |i| i == 1 }.should be_true
165
- [0,1].unanimous? { |i| i == 1 }.should be_false
164
+ expect([0,0].unanimous? { |i| i == 1 }).to be_true
165
+ expect([0,1].unanimous? { |i| i == 1 }).to be_false
166
166
  end
167
167
 
168
168
  it "returns true and false with an argument and a block" do
169
- [0,0].unanimous?(false) { |i| i.odd? }.should be_true
170
- [0,0].unanimous?(true) { |i| i.odd? }.should be_false
169
+ expect([0,0].unanimous?(false) { |i| i.odd? }).to be_true
170
+ expect([0,0].unanimous?(true) { |i| i.odd? }).to be_false
171
171
  end
172
172
  end
173
173
 
@@ -178,51 +178,51 @@ describe Array, "#to_h" do
178
178
  it "remains unchanged" do
179
179
  ary = [0,0]
180
180
  val = ary.to_h
181
- ary.should eq([0,0])
182
- (val.__id__ == ary.__id__).should be_false
181
+ expect(ary).to eq([0,0])
182
+ expect((val.__id__ == ary.__id__)).to be_false
183
183
  end
184
184
 
185
185
  it "converts flat arrays" do
186
- %w{a b c}.to_h.should eq({0=>"a", 1=>"b", 2=>"c"})
187
- %w{a b}.to_h.should eq({0=>"a", 1=>"b"})
188
- ['a'].to_h.should eq({0=>"a"})
189
- [].to_h.should eq({})
186
+ expect(%w{a b c}.to_h).to eq({0=>"a", 1=>"b", 2=>"c"})
187
+ expect(%w{a b}.to_h).to eq({0=>"a", 1=>"b"})
188
+ expect(['a'].to_h).to eq({0=>"a"})
189
+ expect([].to_h).to eq({})
190
190
  end
191
191
 
192
192
  it "converts an array of pairs" do
193
- [[1,2], [3,4]].to_h.should eq({1=>2, 3=>4})
194
- [[1,2]].to_h.should eq({1=>2})
193
+ expect([[1,2], [3,4]].to_h).to eq({1=>2, 3=>4})
194
+ expect([[1,2]].to_h).to eq({1=>2})
195
195
  end
196
196
 
197
197
  it "converts an array of hashes (without conflicts)" do
198
- [{1=>2}, {3=>4}].to_h.should eq({1=>2, 3=>4})
199
- [{1=>2}].to_h.should eq({1=>2})
198
+ expect([{1=>2}, {3=>4}].to_h).to eq({1=>2, 3=>4})
199
+ expect([{1=>2}].to_h).to eq({1=>2})
200
200
  end
201
201
 
202
202
  it "converts an array of hashes (with conflicts)" do
203
- [{1=>2}, {3=>4, 1=>5}].to_h.should eq({1=>[2,5], 3=>4})
204
- [{1=>2}].to_h.should eq({1=>2})
203
+ expect([{1=>2}, {3=>4, 1=>5}].to_h).to eq({1=>[2,5], 3=>4})
204
+ expect([{1=>2}].to_h).to eq({1=>2})
205
205
  end
206
206
 
207
207
  it "converts an array of hashes with common name and value keys" do
208
208
  ary = [{"name" => 1, "value" => 2}, {"name" => 3, "value" => 4}]
209
- ary.to_h.should eq({1=>2, 3=>4})
209
+ expect(ary.to_h).to eq({1=>2, 3=>4})
210
210
 
211
211
  ary = [{:name => 1, :value => 2}, {:name => 3, :value => 4}]
212
- ary.to_h.should eq({1=>2, 3=>4})
212
+ expect(ary.to_h).to eq({1=>2, 3=>4})
213
213
 
214
214
  ary = [{:x => 1, :y => 2}, {:x => 3, :y => 4}]
215
- ary.to_h(:x, :y).should eq({1=>2, 3=>4})
215
+ expect(ary.to_h(:x, :y)).to eq({1=>2, 3=>4})
216
216
 
217
217
  ary = [{:x => 1, :y => 2}, {:x => 3, :y => 4}]
218
- ary.to_h("x", "y").should eq({1=>2, 3=>4})
218
+ expect(ary.to_h("x", "y")).to eq({1=>2, 3=>4})
219
219
  end
220
220
 
221
221
  it "converts a hash-turned-array back to the original hash" do
222
222
  hsh = {1=>{2=>3}}
223
223
  val = hsh.to_a.to_h
224
- hsh.should eq(val)
225
- (val.__id__ == hsh.__id__).should be_false
224
+ expect(hsh).to eq(val)
225
+ expect((val.__id__ == hsh.__id__)).to be_false
226
226
  end
227
227
  end
228
228
 
@@ -5,7 +5,7 @@ require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
5
5
  #
6
6
  describe TrueClass, "#is_a? Boolean" do
7
7
  it "is a Boolean" do
8
- true.should be_a_kind_of Boolean
8
+ expect(true).to be_a_kind_of Boolean
9
9
  end
10
10
  end
11
11
 
@@ -14,6 +14,6 @@ end
14
14
  #
15
15
  describe FalseClass, "#is_a? Boolean" do
16
16
  it "is a Boolean" do
17
- false.should be_a_kind_of Boolean
17
+ expect(false).to be_a_kind_of Boolean
18
18
  end
19
19
  end
@@ -5,22 +5,22 @@ require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
5
5
  #
6
6
  describe Numeric, "units" do
7
7
  it "chronological sizes" do
8
- 3.years.should eq(3*365*24*60*60)
9
- 3.weeks.should eq(3*7*24*60*60)
10
- 3.days.should eq(3*24*60*60)
11
- 3.hours.should eq(3*60*60)
12
- 3.minutes.should eq(3*60)
13
- 3.mseconds.should eq(3 / 1000.0)
14
- 3.useconds.should eq(3 / 1000000.0)
8
+ expect(3.years).to eq(3*365*24*60*60)
9
+ expect(3.weeks).to eq(3*7*24*60*60)
10
+ expect(3.days).to eq(3*24*60*60)
11
+ expect(3.hours).to eq(3*60*60)
12
+ expect(3.minutes).to eq(3*60)
13
+ expect(3.mseconds).to eq(3 / 1000.0)
14
+ expect(3.useconds).to eq(3 / 1000000.0)
15
15
  end
16
16
 
17
17
  it "byte sizes" do
18
- 3.eb.should eq(3*(2**60))
19
- 3.pb.should eq(3*(2**50))
20
- 3.tb.should eq(3*(2**40))
21
- 3.gb.should eq(3*(2**30))
22
- 3.mb.should eq(3*(2**20))
23
- 3.kb.should eq(3*(2**10))
18
+ expect(3.eb).to eq(3*(2**60))
19
+ expect(3.pb).to eq(3*(2**50))
20
+ expect(3.tb).to eq(3*(2**40))
21
+ expect(3.gb).to eq(3*(2**30))
22
+ expect(3.mb).to eq(3*(2**20))
23
+ expect(3.kb).to eq(3*(2**10))
24
24
  end
25
25
  end
26
26
 
@@ -7,7 +7,7 @@ describe Pathname, ".which" do
7
7
  it "finds executables correctly" do
8
8
  %w{which}.each do |cmd|
9
9
  pname = Pathname.which(cmd)
10
- pname.to_s.should eq(`which #{cmd}`.chomp)
10
+ expect(pname.to_s).to eq(`which #{cmd}`.chomp)
11
11
  end
12
12
  end
13
13
  end
data/spec/spec_helper.rb CHANGED
@@ -4,4 +4,7 @@ require 'rspec'
4
4
  require 'duct_tape'
5
5
 
6
6
  RSpec.configure do |config|
7
+ config.mock_with :rspec do |c|
8
+ c.syntax = [:should, :expect]
9
+ end
7
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duct_tape
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,10 +9,26 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-07 00:00:00.000000000 Z
12
+ date: 2014-06-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: facets
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 2.9.3
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 2.9.3
30
+ - !ruby/object:Gem::Dependency
31
+ name: backports
16
32
  requirement: !ruby/object:Gem::Requirement
17
33
  none: false
18
34
  requirements:
@@ -28,14 +44,14 @@ dependencies:
28
44
  - !ruby/object:Gem::Version
29
45
  version: '0'
30
46
  - !ruby/object:Gem::Dependency
31
- name: rake
47
+ name: bundler
32
48
  requirement: !ruby/object:Gem::Requirement
33
49
  none: false
34
50
  requirements:
35
51
  - - ! '>='
36
52
  - !ruby/object:Gem::Version
37
53
  version: '0'
38
- type: :development
54
+ type: :runtime
39
55
  prerelease: false
40
56
  version_requirements: !ruby/object:Gem::Requirement
41
57
  none: false
@@ -91,6 +107,38 @@ dependencies:
91
107
  - - ! '>='
92
108
  - !ruby/object:Gem::Version
93
109
  version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rake
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: simplecov
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
94
142
  description: A general-purpose utility library for Ruby
95
143
  email:
96
144
  - tw.rodriguez@gmail.com
@@ -105,15 +153,11 @@ files:
105
153
  - Gemfile.lock
106
154
  - LICENSE
107
155
  - README.md
156
+ - REQUIRED_FILES
108
157
  - Rakefile
109
158
  - VERSION
110
159
  - duct_tape.gemspec
111
160
  - ext/mkrf_conf.rb
112
- - git_hooks/env_vars.sh
113
- - git_hooks/post-commit
114
- - git_hooks/post-merge
115
- - git_hooks/pre-commit
116
- - install_git_hooks
117
161
  - lib/algorithms/containers.rb
118
162
  - lib/algorithms/containers/heap.rb
119
163
  - lib/algorithms/containers/priority_queue.rb
@@ -176,7 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
220
  version: '0'
177
221
  requirements: []
178
222
  rubyforge_project:
179
- rubygems_version: 1.8.24
223
+ rubygems_version: 1.8.23.2
180
224
  signing_key:
181
225
  specification_version: 3
182
226
  summary: A bunch of useful patches for core Ruby classes