spruz 0.2.5 → 0.2.6
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/spruz/attempt.rb +24 -4
- data/lib/spruz/hash_union.rb +6 -1
- data/lib/spruz/version.rb +1 -1
- data/tests/test_spruz.rb +27 -10
- metadata +46 -48
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.6
|
data/lib/spruz/attempt.rb
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
module Spruz
|
2
2
|
module Attempt
|
3
|
-
def attempt(
|
3
|
+
def attempt(opts = {}, &block)
|
4
|
+
sleep = nil
|
5
|
+
exception_class = StandardError
|
6
|
+
if Numeric === opts
|
7
|
+
attempts = opts
|
8
|
+
else
|
9
|
+
attempts = opts[:attempts] || 1
|
10
|
+
exception_class = opts[:exception_class] if opts.key?(:exception_class)
|
11
|
+
sleep = opts[:sleep]
|
12
|
+
end
|
4
13
|
return if attempts <= 0
|
5
14
|
count = 0
|
6
15
|
if exception_class.nil?
|
@@ -8,8 +17,8 @@ module Spruz
|
|
8
17
|
count += 1
|
9
18
|
if block.call(count)
|
10
19
|
return true
|
11
|
-
elsif
|
12
|
-
sleep
|
20
|
+
elsif count < attempts
|
21
|
+
sleep_duration(sleep, count)
|
13
22
|
end
|
14
23
|
end until count == attempts
|
15
24
|
false
|
@@ -20,12 +29,23 @@ module Spruz
|
|
20
29
|
true
|
21
30
|
rescue exception_class
|
22
31
|
if count < attempts
|
23
|
-
sleep_duration
|
32
|
+
sleep_duration(sleep, count)
|
24
33
|
retry
|
25
34
|
end
|
26
35
|
false
|
27
36
|
end
|
28
37
|
end
|
29
38
|
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def sleep_duration(duration, count)
|
43
|
+
case duration
|
44
|
+
when Numeric
|
45
|
+
sleep duration
|
46
|
+
when Proc
|
47
|
+
sleep duration.call(count)
|
48
|
+
end
|
49
|
+
end
|
30
50
|
end
|
31
51
|
end
|
data/lib/spruz/hash_union.rb
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
module Spruz
|
2
2
|
module HashUnion
|
3
3
|
def |(other)
|
4
|
-
|
4
|
+
case
|
5
|
+
when other.respond_to?(:to_hash)
|
6
|
+
other = other.to_hash
|
7
|
+
when other.respond_to?(:to_h)
|
8
|
+
other = other.to_h
|
9
|
+
end
|
5
10
|
other.merge(self)
|
6
11
|
end
|
7
12
|
end
|
data/lib/spruz/version.rb
CHANGED
data/tests/test_spruz.rb
CHANGED
@@ -320,6 +320,18 @@ module Spruz
|
|
320
320
|
class HashUnionTest < Test::Unit::TestCase
|
321
321
|
require 'spruz/xt/hash_union'
|
322
322
|
|
323
|
+
class HashLike1
|
324
|
+
def to_hash
|
325
|
+
{ 'foo' => true }
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
329
|
+
class HashLike2
|
330
|
+
def to_h
|
331
|
+
{ 'foo' => true }
|
332
|
+
end
|
333
|
+
end
|
334
|
+
|
323
335
|
def test_union
|
324
336
|
defaults = { 'foo' => true, 'bar' => false, 'quux' => nil }
|
325
337
|
hash = { 'foo' => false }
|
@@ -337,6 +349,11 @@ module Spruz
|
|
337
349
|
['quux', true] ],
|
338
350
|
hash.sort
|
339
351
|
end
|
352
|
+
|
353
|
+
def test_hash_conversion
|
354
|
+
assert_equal({ 'foo' => true }, { } | HashLike1.new)
|
355
|
+
assert_equal({ 'foo' => true }, { } | HashLike2.new)
|
356
|
+
end
|
340
357
|
end
|
341
358
|
|
342
359
|
class SubhashTest < Test::Unit::TestCase
|
@@ -470,11 +487,11 @@ module Spruz
|
|
470
487
|
require 'spruz/xt/attempt'
|
471
488
|
|
472
489
|
def test_attempt_block_condition
|
473
|
-
assert attempt(1, nil) { |c| c == 1 }
|
474
|
-
assert attempt(3, nil) { |c| c == 1 }
|
475
|
-
assert_false attempt(3, nil) { |c| c == 4 }
|
476
|
-
assert_nil attempt(0, nil) { |c| c == 4 }
|
477
|
-
assert_raise(Exception) { attempt(3, nil) { raise Exception } }
|
490
|
+
assert attempt(:attempts => 1, :exception_class => nil) { |c| c == 1 }
|
491
|
+
assert attempt(:attempts => 3, :exception_class => nil) { |c| c == 1 }
|
492
|
+
assert_false attempt(:attempts => 3, :exception_class => nil) { |c| c == 4 }
|
493
|
+
assert_nil attempt(:attempts => 0, :exception_class => nil) { |c| c == 4 }
|
494
|
+
assert_raise(Exception) { attempt(:attempts => 3, :exception_class => nil) { raise Exception } }
|
478
495
|
end
|
479
496
|
|
480
497
|
class MyError < StandardError; end
|
@@ -489,11 +506,11 @@ module Spruz
|
|
489
506
|
end
|
490
507
|
|
491
508
|
def test_attempt_exception
|
492
|
-
assert attempt(1, MyException) { |c| c != 1 and raise MyException }
|
493
|
-
assert attempt(3, MyException) { |c| c != 1 and raise MyException }
|
494
|
-
assert_false attempt(3, MyException) { |c| c != 4 and raise MyException }
|
495
|
-
assert_nil attempt(0, MyException) { |c| c != 4 and raise MyException }
|
496
|
-
assert_raise(Exception) { attempt(3, MyException) { raise Exception } }
|
509
|
+
assert attempt(:attempts => 1, :exception_class => MyException) { |c| c != 1 and raise MyException }
|
510
|
+
assert attempt(:attempts => 3, :exception_class => MyException) { |c| c != 1 and raise MyException }
|
511
|
+
assert_false attempt(:attempts => 3, :exception_class => MyException) { |c| c != 4 and raise MyException }
|
512
|
+
assert_nil attempt(:attempts => 0, :exception_class => MyException) { |c| c != 4 and raise MyException }
|
513
|
+
assert_raise(Exception) { attempt(:attempts => 3, :exception_class => MyException) { raise Exception } }
|
497
514
|
end
|
498
515
|
end
|
499
516
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spruz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 6
|
10
|
+
version: 0.2.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Florian Frank
|
@@ -15,8 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-04-29 00:00:00 Z
|
20
19
|
dependencies: []
|
21
20
|
|
22
21
|
description: All the stuff that isn't good/big enough for a real library.
|
@@ -28,57 +27,56 @@ extensions: []
|
|
28
27
|
extra_rdoc_files:
|
29
28
|
- README
|
30
29
|
files:
|
31
|
-
-
|
32
|
-
-
|
33
|
-
-
|
30
|
+
- tests/test_spruz_memoize.rb
|
31
|
+
- tests/test_spruz.rb
|
32
|
+
- LICENSE
|
34
33
|
- Rakefile
|
35
|
-
- lib/spruz
|
36
|
-
- lib/spruz/
|
37
|
-
- lib/spruz/
|
34
|
+
- lib/spruz.rb
|
35
|
+
- lib/spruz/hash_union.rb
|
36
|
+
- lib/spruz/write.rb
|
37
|
+
- lib/spruz/version.rb
|
38
|
+
- lib/spruz/round.rb
|
39
|
+
- lib/spruz/go.rb
|
40
|
+
- lib/spruz/generator.rb
|
38
41
|
- lib/spruz/shuffle.rb
|
39
|
-
- lib/spruz/
|
40
|
-
- lib/spruz/
|
42
|
+
- lib/spruz/deep_dup.rb
|
43
|
+
- lib/spruz/memoize.rb
|
41
44
|
- lib/spruz/subhash.rb
|
42
|
-
- lib/spruz/count_by.rb
|
43
|
-
- lib/spruz/attempt.rb
|
44
|
-
- lib/spruz/round.rb
|
45
|
-
- lib/spruz/partial_application.rb
|
46
|
-
- lib/spruz/uniq_by.rb
|
47
|
-
- lib/spruz/p.rb
|
48
45
|
- lib/spruz/bijection.rb
|
46
|
+
- lib/spruz/limited.rb
|
47
|
+
- lib/spruz/attempt.rb
|
48
|
+
- lib/spruz/to_proc.rb
|
49
49
|
- lib/spruz/module_group.rb
|
50
|
-
- lib/spruz/
|
51
|
-
- lib/spruz/
|
52
|
-
- lib/spruz/
|
53
|
-
- lib/spruz/
|
54
|
-
- lib/spruz/
|
55
|
-
- lib/spruz/
|
56
|
-
- lib/spruz/
|
57
|
-
- lib/spruz/xt/null.rb
|
58
|
-
- lib/spruz/xt/time_dummy.rb
|
50
|
+
- lib/spruz/null.rb
|
51
|
+
- lib/spruz/xt.rb
|
52
|
+
- lib/spruz/once.rb
|
53
|
+
- lib/spruz/xt/hash_union.rb
|
54
|
+
- lib/spruz/xt/write.rb
|
55
|
+
- lib/spruz/xt/irb.rb
|
56
|
+
- lib/spruz/xt/round.rb
|
59
57
|
- lib/spruz/xt/shuffle.rb
|
58
|
+
- lib/spruz/xt/deep_dup.rb
|
59
|
+
- lib/spruz/xt/symbol_to_proc.rb
|
60
60
|
- lib/spruz/xt/subhash.rb
|
61
|
-
- lib/spruz/xt/count_by.rb
|
62
61
|
- lib/spruz/xt/attempt.rb
|
63
|
-
- lib/spruz/xt/
|
64
|
-
- lib/spruz/xt/partial_application.rb
|
65
|
-
- lib/spruz/xt/uniq_by.rb
|
62
|
+
- lib/spruz/xt/null.rb
|
66
63
|
- lib/spruz/xt/p.rb
|
67
|
-
- lib/spruz/xt/
|
68
|
-
- lib/spruz/xt/
|
69
|
-
- lib/spruz/xt/symbol_to_proc.rb
|
70
|
-
- lib/spruz/xt/write.rb
|
71
|
-
- lib/spruz/xt/hash_union.rb
|
64
|
+
- lib/spruz/xt/partial_application.rb
|
65
|
+
- lib/spruz/xt/time_dummy.rb
|
72
66
|
- lib/spruz/xt/full.rb
|
73
|
-
- lib/spruz/xt/
|
74
|
-
- lib/spruz/
|
75
|
-
- lib/spruz/xt.rb
|
76
|
-
- lib/spruz.rb
|
77
|
-
-
|
78
|
-
-
|
67
|
+
- lib/spruz/xt/count_by.rb
|
68
|
+
- lib/spruz/xt/blank.rb
|
69
|
+
- lib/spruz/xt/uniq_by.rb
|
70
|
+
- lib/spruz/p.rb
|
71
|
+
- lib/spruz/minimize.rb
|
72
|
+
- lib/spruz/partial_application.rb
|
73
|
+
- lib/spruz/time_dummy.rb
|
74
|
+
- lib/spruz/count_by.rb
|
75
|
+
- lib/spruz/uniq_by.rb
|
76
|
+
- bin/enum
|
77
|
+
- README
|
78
|
+
- VERSION
|
79
79
|
- install.rb
|
80
|
-
- LICENSE
|
81
|
-
has_rdoc: true
|
82
80
|
homepage: http://flori.github.com/spruz
|
83
81
|
licenses: []
|
84
82
|
|
@@ -111,10 +109,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
109
|
requirements: []
|
112
110
|
|
113
111
|
rubyforge_project:
|
114
|
-
rubygems_version: 1.
|
112
|
+
rubygems_version: 1.7.1
|
115
113
|
signing_key:
|
116
114
|
specification_version: 3
|
117
115
|
summary: Useful stuff.
|
118
116
|
test_files:
|
119
|
-
- tests/test_spruz.rb
|
120
117
|
- tests/test_spruz_memoize.rb
|
118
|
+
- tests/test_spruz.rb
|