spruz 0.2.2 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -18,7 +18,7 @@ end
18
18
 
19
19
  desc "Creating documentation"
20
20
  task :doc do
21
- ruby 'make_doc.rb'
21
+ sh "sdoc -t Spruz -o doc -m README README #{Dir['lib/**/*.rb']} * ' '}"
22
22
  end
23
23
 
24
24
  desc "Testing library"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.5
@@ -0,0 +1,31 @@
1
+ module Spruz
2
+ module Attempt
3
+ def attempt(attempts = 1, exception_class = StandardError, sleep_duration = nil, &block)
4
+ return if attempts <= 0
5
+ count = 0
6
+ if exception_class.nil?
7
+ begin
8
+ count += 1
9
+ if block.call(count)
10
+ return true
11
+ elsif sleep_duration and count < attempts
12
+ sleep sleep_duration
13
+ end
14
+ end until count == attempts
15
+ false
16
+ else
17
+ begin
18
+ count += 1
19
+ block.call(count)
20
+ true
21
+ rescue exception_class
22
+ if count < attempts
23
+ sleep_duration and sleep sleep_duration
24
+ retry
25
+ end
26
+ false
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
data/lib/spruz/subhash.rb CHANGED
@@ -10,7 +10,10 @@ module Spruz
10
10
  # MatchData instance if the matching pattern was a regular rexpression
11
11
  # otherwise it is nil.
12
12
  def subhash(*patterns)
13
- patterns.map! { |pat| pat.respond_to?(:match) ? pat : pat.to_s }
13
+ patterns.map! do |pat|
14
+ pat = pat.to_sym.to_s if pat.respond_to?(:to_sym)
15
+ pat.respond_to?(:match) ? pat : pat.to_s
16
+ end
14
17
  result =
15
18
  if default_proc
16
19
  self.class.new(&default_proc)
data/lib/spruz/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Spruz
2
2
  # Spruz version
3
- VERSION = '0.2.2'
3
+ VERSION = '0.2.5'
4
4
  VERSION_ARRAY = VERSION.split(/\./).map { |x| x.to_i } # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
@@ -0,0 +1,7 @@
1
+ require 'spruz/attempt'
2
+
3
+ module Spruz
4
+ class ::Object
5
+ include Spruz::Attempt
6
+ end
7
+ end
data/lib/spruz/xt.rb CHANGED
@@ -15,4 +15,5 @@ module Spruz
15
15
  require 'spruz/xt/symbol_to_proc'
16
16
  require 'spruz/xt/write'
17
17
  require 'spruz/xt/deep_dup'
18
+ require 'spruz/xt/attempt'
18
19
  end
data/lib/spruz.rb CHANGED
@@ -21,4 +21,5 @@ module Spruz
21
21
  require 'spruz/uniq_by'
22
22
  require 'spruz/write'
23
23
  require 'spruz/deep_dup'
24
+ require 'spruz/attempt'
24
25
  end
data/tests/test_spruz.rb CHANGED
@@ -465,4 +465,35 @@ module Spruz
465
465
  end
466
466
  end
467
467
  end
468
+
469
+ class TryTest < Test::Unit::TestCase
470
+ require 'spruz/xt/attempt'
471
+
472
+ 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 } }
478
+ end
479
+
480
+ class MyError < StandardError; end
481
+ class MyException < Exception; end
482
+
483
+ def test_attempt_default_exception
484
+ assert attempt(1) { |c| c != 1 and raise MyError }
485
+ assert attempt(3) { |c| c != 1 and raise MyError }
486
+ assert_false attempt(3) { |c| c != 4 and raise MyError }
487
+ assert_nil attempt(0) { |c| c != 4 and raise MyError }
488
+ assert_raise(Exception) { attempt(3) { raise Exception } }
489
+ end
490
+
491
+ 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 } }
497
+ end
498
+ end
468
499
  end
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spruz
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 5
10
+ version: 0.2.5
5
11
  platform: ruby
6
12
  authors:
7
13
  - Florian Frank
@@ -9,7 +15,7 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-11-11 00:00:00 +01:00
18
+ date: 2011-02-08 00:00:00 +01:00
13
19
  default_executable:
14
20
  dependencies: []
15
21
 
@@ -34,6 +40,7 @@ files:
34
40
  - lib/spruz/minimize.rb
35
41
  - lib/spruz/subhash.rb
36
42
  - lib/spruz/count_by.rb
43
+ - lib/spruz/attempt.rb
37
44
  - lib/spruz/round.rb
38
45
  - lib/spruz/partial_application.rb
39
46
  - lib/spruz/uniq_by.rb
@@ -52,6 +59,7 @@ files:
52
59
  - lib/spruz/xt/shuffle.rb
53
60
  - lib/spruz/xt/subhash.rb
54
61
  - lib/spruz/xt/count_by.rb
62
+ - lib/spruz/xt/attempt.rb
55
63
  - lib/spruz/xt/round.rb
56
64
  - lib/spruz/xt/partial_application.rb
57
65
  - lib/spruz/xt/uniq_by.rb
@@ -83,21 +91,27 @@ rdoc_options:
83
91
  require_paths:
84
92
  - lib
85
93
  required_ruby_version: !ruby/object:Gem::Requirement
94
+ none: false
86
95
  requirements:
87
96
  - - ">="
88
97
  - !ruby/object:Gem::Version
98
+ hash: 3
99
+ segments:
100
+ - 0
89
101
  version: "0"
90
- version:
91
102
  required_rubygems_version: !ruby/object:Gem::Requirement
103
+ none: false
92
104
  requirements:
93
105
  - - ">="
94
106
  - !ruby/object:Gem::Version
107
+ hash: 3
108
+ segments:
109
+ - 0
95
110
  version: "0"
96
- version:
97
111
  requirements: []
98
112
 
99
113
  rubyforge_project:
100
- rubygems_version: 1.3.5
114
+ rubygems_version: 1.3.7
101
115
  signing_key:
102
116
  specification_version: 3
103
117
  summary: Useful stuff.