rfortune 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,10 @@
1
1
  == Changelog
2
2
 
3
+ === 0.2.1 (2009-12-12)
4
+
5
+ * Added class method 'random_fortune'. Usable with or without block.
6
+ * Added 'each' block
7
+
3
8
  === 0.2.0 (2009-12-07)
4
9
 
5
10
  * Added summation (+)
@@ -14,9 +14,10 @@ gem install rfortune
14
14
 
15
15
  == SYNOPSIS:
16
16
 
17
- To instantiate a RFortune you have to give the relative path to a
18
- cookie jar file as an argument. If there is no such file relative to the
19
- current directory it will be searched beneath /usr/share/games/fortunes.
17
+ To instantiate RFortune you have to give the relative path to a cookie
18
+ jar file as an argument. If there is no argument given or no such file
19
+ a new one will be created. File paths can be specified relative or
20
+ absolute or as the name of a file from beneath /usr/share/games/forunes.
20
21
 
21
22
  cookies = RFortune.new 'cookie_jar_file'
22
23
 
@@ -24,6 +25,10 @@ To get a random cookie from the jar simply do:
24
25
 
25
26
  cookies.random
26
27
 
28
+ == Links
29
+
30
+ WP: Fortune[http://en.wikipedia.org/wiki/Fortune_(Unix)]
31
+
27
32
  == Copyright
28
33
 
29
34
  Copyright (c) 2009 Helge Rausch. See LICENSE for details.
@@ -109,7 +109,7 @@ class RFortune
109
109
 
110
110
  # Depricated, alias for to_a
111
111
  def all
112
-
112
+
113
113
  to_a
114
114
 
115
115
  end
@@ -146,5 +146,61 @@ class RFortune
146
146
 
147
147
  end
148
148
 
149
+ # Calls block once for each cookie, passing that cookie as a parameter.
150
+ def each
151
+
152
+ @cookies.each { |c| yield c }
153
+
154
+ end
155
+
156
+ # Returns a random fortune from fortune's fortunes. If a block is
157
+ # given it passes one fortune per iteration to the block. Infinite.
158
+ # That means FOREVER! So be careful!
159
+ # Takes 'false' as an argument if you'd like to include offensive
160
+ # fortunes.
161
+ def self.random_fortune( no_offense = true )
162
+
163
+ cookie_jars = []
164
+
165
+ Dir.foreach( FORTUNES_PATH ) { |filename|
166
+
167
+ cookie_jars += [ filename ] if filename.match( /\A.*\.u8\Z/ )
168
+
169
+ }
170
+
171
+ unless no_offense
172
+
173
+ Dir.foreach( FORTUNES_PATH + 'off/' ) { |filename|
174
+
175
+ cookie_jars += [ 'off/' + filename ] if filename.match( /\.u8\Z/ )
176
+
177
+ }
178
+
179
+ end
180
+
181
+ if block_given?
182
+
183
+ fortunes = RFortune.new
184
+
185
+ cookie_jars.each { |jar|
186
+
187
+ fortunes += RFortune.new( jar )
188
+
189
+ }
190
+
191
+ begin
192
+
193
+ yield fortunes.random
194
+
195
+ end while true
196
+
197
+ else
198
+
199
+ RFortune.new( FORTUNES_PATH + cookie_jars[ rand( cookie_jars.size ) ] ).random
200
+
201
+ end
202
+
203
+ end
204
+
149
205
  end
150
206
 
@@ -72,5 +72,41 @@ class RFortuneTest < Test::Unit::TestCase
72
72
 
73
73
  end
74
74
 
75
+ def test_each
76
+
77
+ cookies = RFortune.new + [ 'foo', 'bar' ]
78
+
79
+ cookies.each { |c|
80
+
81
+ assert_match /\A(foo|bar)\Z/, c, 'Block for \'each\' method'
82
+
83
+ }
84
+
85
+ end
86
+
87
+ def test_random_fortune
88
+
89
+ # Get regular fortune
90
+ assert_equal String, RFortune.random_fortune.class, 'Try to get a random fortune from fortune\'s fortunes'
91
+
92
+ # Include offensive fortunes
93
+ assert_equal String, RFortune.random_fortune( false ).class, 'Try to get a random fortune from fortune\'s fortunes'
94
+
95
+ # From block
96
+ i = 0
97
+
98
+ RFortune.random_fortune { |fortune|
99
+
100
+ assert_equal String, fortune.class, 'Try to get fortunes using a block.'
101
+
102
+ break if i == 3
103
+
104
+ i += 1
105
+
106
+ }
107
+
108
+
109
+ end
110
+
75
111
  end
76
112
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rfortune
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Helge Rausch
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-07 00:00:00 +01:00
12
+ date: 2009-12-12 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -21,7 +21,6 @@ extensions: []
21
21
 
22
22
  extra_rdoc_files:
23
23
  - README.rdoc
24
- - TODO.rdoc
25
24
  - CHANGELOG.rdoc
26
25
  files:
27
26
  - lib/rfortune.rb
@@ -29,7 +28,6 @@ files:
29
28
  - test/test_rfortune.rb
30
29
  - LICENSE
31
30
  - README.rdoc
32
- - TODO.rdoc
33
31
  - VERSION
34
32
  has_rdoc: true
35
33
  homepage: http://github.com/tsujigiri/rfortune
data/TODO.rdoc DELETED
@@ -1,2 +0,0 @@
1
- == TODO
2
-