rfortune 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
-