chance 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,5 @@
1
- = Chance
1
+ Chance
2
+ =========
2
3
 
3
4
  Chance is a little Ruby library for expressing uncertainty in your code. Maybe you always wanted to program with probability?
4
5
 
@@ -8,20 +9,20 @@ Date#at_some_point rather than Date#midnight
8
9
  Array#pick(percentage) rather than iterating over every element
9
10
 
10
11
  "maybe" is a Kernel method that randomly evaluates to true or false when it is called.
11
- @bob.lucky_winner? = maybe
12
+
13
+ `@bob.lucky_winner? = maybe`
12
14
  # => true
13
- @chauncey.lucky_winner? = maybe
15
+ `@chauncey.lucky_winner? = maybe`
14
16
  # => false
15
17
 
16
18
  When supplied with a block, it will call it. Or not. Half of the time it just returns nil. For example
17
19
 
18
- maybe {rotate_logs}
20
+ `maybe {rotate_logs}`
19
21
 
20
22
  By default, maybe is 50/50. You can also use "probably", "rarely" and "almost_never", or just create your own Chance object like so:
21
23
 
22
- 30.percent.chance.of { "rain" }
23
-
24
- == Running examples ==
25
- If you have the bundler gem installed, just run
24
+ `30.percent.chance.of { "rain" }`
26
25
 
27
- bundle exec rake
26
+ Running examples
27
+ ----------------
28
+ Make sure you have Bundler installed- then run `bundle exec rake`.
@@ -1,5 +1,3 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../chance")
2
-
3
1
  class Die
4
2
  attr_reader :sides, :odds
5
3
  def initialize(sides)
@@ -1,5 +1,3 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../chance")
2
-
3
1
  class SchroedingerCat
4
2
  def initialize
5
3
  @alive = nil
@@ -1,5 +1,3 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../chance")
2
-
3
1
  def rain
4
2
  "'|'|'|'|'|'|'|'"
5
3
  end
@@ -1,2 +1,2 @@
1
1
  chance_lib_dir = File.expand_path(File.dirname(__FILE__)) + "/chance/"
2
- ['core_extensions', 'percentage', 'chance', 'chance_case'].each {|filename| require chance_lib_dir + filename}
2
+ ['core_extensions', 'percentage', 'chance'].each {|filename| require chance_lib_dir + filename}
@@ -34,13 +34,6 @@ class String
34
34
  Percentage.new((second / first) * 100)
35
35
  end
36
36
  end
37
- #
38
- # class Date
39
- # def at_some_point
40
- # (at_midnight..tomorrow.at_midnight).to_a.rand
41
- # end
42
- # alias :whenever :at_some_point
43
- # end
44
37
 
45
38
  class Array
46
39
  def random
@@ -57,9 +50,18 @@ class Array
57
50
  end
58
51
 
59
52
  def pick_about(percentage)
60
- select do |element|
61
- percentage.chance.happens?
62
- end
53
+ select {|element| percentage.chance.happens? }
63
54
  end
64
55
 
65
56
  end
57
+
58
+ class Range
59
+ def random
60
+ step_to, i = rand(count), 0
61
+
62
+ step do |obj|
63
+ return obj if i == step_to
64
+ i += 1
65
+ end
66
+ end
67
+ end
@@ -1,3 +1,3 @@
1
- module Chance
2
- VERSION = "0.5.0"
1
+ class Chance
2
+ VERSION = "0.5.1"
3
3
  end
@@ -62,6 +62,20 @@ describe "Extensions to core classes;" do
62
62
  a.should include(a.random)
63
63
  end
64
64
  end
65
+ end
66
+
67
+ context "Range" do
68
+ describe "#random" do
69
+ it "steps through the range and returns a random element from a numeric range" do
70
+ numeric_range = 1..10
71
+ numeric_range.should include numeric_range.random
72
+ end
65
73
 
74
+ it "steps through the range and returns a random element from a range of strings" do
75
+ string_range = 'a'..'z'
76
+ string_range.should include string_range.random
77
+ end
78
+ end
66
79
  end
67
- end
80
+
81
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 5
8
- - 0
9
- version: 0.5.0
8
+ - 1
9
+ version: 0.5.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Patrick Ewing
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-07-13 00:00:00 -04:00
17
+ date: 2011-07-14 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -31,7 +31,7 @@ files:
31
31
  - .gitignore
32
32
  - COPYING
33
33
  - Gemfile
34
- - README
34
+ - README.markdown
35
35
  - Rakefile
36
36
  - chance.gemspec
37
37
  - examples/dice.rb
@@ -39,7 +39,6 @@ files:
39
39
  - examples/weather.rb
40
40
  - lib/chance.rb
41
41
  - lib/chance/chance.rb
42
- - lib/chance/chance_case.rb
43
42
  - lib/chance/core_extensions.rb
44
43
  - lib/chance/percentage.rb
45
44
  - lib/chance/version.rb
@@ -1,19 +0,0 @@
1
- class ChanceCase
2
- attr_reader :outcome
3
-
4
- def self.test(&block)
5
- puts 'Here goes:'
6
- case block.arity
7
- when 0
8
- yield
9
- when 1
10
- yield 'one'
11
- when 2
12
- yield 'one', 'two'
13
- when 3
14
- yield 'one', 'two', 'three'
15
- end
16
- puts 'Done!'
17
- end
18
-
19
- end