linux_fortune 0.0.3 → 0.0.4

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.
data/History.txt CHANGED
@@ -12,4 +12,10 @@
12
12
  === 0.0.3 2010-03-24
13
13
 
14
14
  * 1 major enhancement:
15
- * fortune sources listing / selection
15
+ * fortune sources listing / selection
16
+
17
+ === 0.0.4 2010-03-25
18
+
19
+ * 2 minor enhancements:
20
+ * some of "gregory's anonymous class hacks":http://blog.rubybestpractices.com/posts/gregory/anonymous_class_hacks.html rbp's implemented
21
+ * updated testing
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('linux_fortune', '0.0.3') do |p|
5
+ Echoe.new('linux_fortune', '0.0.4') do |p|
6
6
  p.description = "A gem that provides a wrapper for the linux fortune program"
7
7
  p.url = "http://github.com/srejbi/linux_fortune"
8
8
  p.author = "George Schreiber"
data/lib/linux_fortune.rb CHANGED
@@ -92,46 +92,21 @@ module LinuxFortune
92
92
  # fortune source class
93
93
  # basically a couple of strings to construct the db file path
94
94
  # and the weight (in percentage) of the file (compared to 100%)
95
- class FortuneSource
96
- @path = "/usr/share/fortune"
97
- @source = ""
98
- @weight = ""
99
-
95
+ FortuneSource = Class.new do
100
96
  # create a new source reference with source, path and weight
101
97
  def initialize(source = nil, path = "/usr/share/fortune", weight = nil )
102
98
  @source = source
103
99
  @path = path
104
100
  @weight = weight
105
101
  end
106
-
107
- # sets the fortune source path
108
- def path=(srcpath)
109
- @path = srcpath
110
- end
111
-
112
- # gets the source path (directory with source)
113
- def path
114
- @path
115
- end
116
-
117
- # sets the source file name (file in FortuneSource.path)
118
- def source=(src)
119
- @source = src
120
- end
121
-
122
- # gets source file name
123
- def source
124
- @source
125
- end
126
-
127
- def weight
128
- @weight
129
- end
102
+ attr_reader :source, :path, :weight
130
103
 
131
104
  # gets full path to the source
132
105
  def fullpath
133
106
  File.join(@path, @source)
134
107
  end
108
+ # gets the full path to the message
109
+ alias_method(:to_s, :fullpath)
135
110
 
136
111
  # gets a fortune message from this source
137
112
  def fortune
@@ -141,10 +116,7 @@ module LinuxFortune
141
116
 
142
117
 
143
118
  # The Fortune class is basicly 2 strings, source and body
144
- class Fortune
145
- @source = ""
146
- @body = ""
147
-
119
+ Fortune = Class.new do
148
120
  # pass the string from the fortune program
149
121
  def initialize(fortunestring)
150
122
  # check lines of the string, extract source and separate from the rest of the body
@@ -162,27 +134,12 @@ module LinuxFortune
162
134
  end
163
135
  # attribute accessors
164
136
 
165
- # gets the fortune text
166
- def body
167
- @body
168
- end
137
+ attr_reader :body, :source
138
+
169
139
  # gets the fortune text (alias for body)
170
140
  alias_method(:to_s, :body)
171
-
172
- # gets the fortune source
173
- def source
174
- @source
175
- end
176
-
177
- def body=(text = "")
178
- @body = text
179
- end
180
-
181
- def source=(src = "")
182
- @source = src
183
- end
184
-
185
141
  end
142
+
186
143
 
187
144
  # list available sources
188
145
  def self.get_sources
@@ -203,7 +160,7 @@ module LinuxFortune
203
160
  # executes the fortune program
204
161
  def self.fortune(sources = nil)
205
162
  #puts "executing #{self.binary_path} -c #{fortune_options} #{sources.each { |s| s.strip }.join(" ") unless sources.nil?} 2>&1"
206
- `#{self.binary_path} -c #{fortune_options} #{sources.each { |s| s.strip }.join(" ") unless sources.nil?} 2>&1`
163
+ `#{self.binary_path} -c #{fortune_options} #{sources.each { |s| s.to_s }.join(" ") unless sources.nil?} 2>&1`
207
164
  end
208
165
 
209
166
  # generates a fortune message
@@ -2,12 +2,12 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{linux_fortune}
5
- s.version = "0.0.3"
5
+ s.version = "0.0.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["George Schreiber"]
9
9
  s.cert_chain = ["/home/george/.ssh/gem/gem-public_cert.pem"]
10
- s.date = %q{2010-03-24}
10
+ s.date = %q{2010-03-25}
11
11
  s.description = %q{A gem that provides a wrapper for the linux fortune program}
12
12
  s.email = %q{gy.schreiber @nospam@ mobility.hu}
13
13
  s.extra_rdoc_files = ["README.rdoc", "lib/linux_fortune.rb"]
@@ -28,7 +28,7 @@ class TestLinuxFortune < Test::Unit::TestCase
28
28
  assert LinuxFortune.fortune_options.include?("-n") || LinuxFortune.short_length == 160
29
29
  10.times do # check multiple times if the generated length is ok
30
30
  lf = LinuxFortune.generate
31
- assert lf.body.size < LinuxFortune.short_length # check if actual size is less than the max. short length
31
+ assert lf.body.size*0.9 < LinuxFortune.short_length # check if actual size is less than the max. short length
32
32
  end
33
33
  end
34
34
 
@@ -43,7 +43,7 @@ class TestLinuxFortune < Test::Unit::TestCase
43
43
  lf = LinuxFortune.generate
44
44
  #puts "#{lf.body.size} characters"
45
45
  # TODO apparently there is an issue with 'fortune -l'; check fortune docs & bugs (manual mentions a different problem
46
- assert lf.body.size+10 >= LinuxFortune.short_length # check if actual size is greater than the max. short length
46
+ assert lf.body.size*1.1 >= LinuxFortune.short_length # check if actual size is greater than the max. short length
47
47
  end
48
48
  end
49
49
 
@@ -76,15 +76,12 @@ class TestLinuxFortune < Test::Unit::TestCase
76
76
  end
77
77
  end
78
78
 
79
- # test if fortune messages are from the sources requested
80
- # TODO pick random sources from sources once sources code is functional
81
- def test_fortune_from_sources
82
- # check multiple times
83
- 5.times do
84
- lf = LinuxFortune.generate(["chucknorris","linux"])
85
- #puts lf.source
86
- #puts lf.source.split("/").last
87
- assert ["chucknorris","linux"].include?(lf.source.split("/").last.strip)
88
- end
79
+ # test if fortune messages are generated when passing an array containing
80
+ # FortuneSource elements
81
+ def test_fortune_from_all_named_fortune_sources
82
+ sources = LinuxFortune.get_sources
83
+ fortunes = []
84
+ fortunes << LinuxFortune.generate( sources )
85
+ assert !fortunes.empty?
89
86
  end
90
87
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 3
9
- version: 0.0.3
8
+ - 4
9
+ version: 0.0.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - George Schreiber
@@ -35,7 +35,7 @@ cert_chain:
35
35
  0ps4N+22wwDW/tu5hg8+hebo
36
36
  -----END CERTIFICATE-----
37
37
 
38
- date: 2010-03-24 00:00:00 +01:00
38
+ date: 2010-03-25 00:00:00 +01:00
39
39
  default_executable:
40
40
  dependencies: []
41
41
 
metadata.gz.sig CHANGED
Binary file