linux_fortune 0.0.4 → 0.0.5
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 +8 -1
- data/README.rdoc +11 -0
- data/Rakefile +2 -2
- data/lib/linux_fortune.rb +48 -16
- data/linux_fortune.gemspec +3 -3
- data/test/test_linux_fortune.rb +11 -0
- data.tar.gz.sig +0 -0
- metadata +4 -4
- metadata.gz.sig +0 -0
data/History.txt
CHANGED
@@ -18,4 +18,11 @@
|
|
18
18
|
|
19
19
|
* 2 minor enhancements:
|
20
20
|
* some of "gregory's anonymous class hacks":http://blog.rubybestpractices.com/posts/gregory/anonymous_class_hacks.html rbp's implemented
|
21
|
-
* updated testing
|
21
|
+
* updated testing
|
22
|
+
|
23
|
+
=== 0.0.5 2010-03-30
|
24
|
+
|
25
|
+
* 1 major enhancement:
|
26
|
+
* fortunes can be searched
|
27
|
+
* minor enhancements:
|
28
|
+
* code comments & cleanups
|
data/README.rdoc
CHANGED
@@ -30,6 +30,17 @@ To use it:
|
|
30
30
|
f = LinuxFortune.generate("chucknorris")
|
31
31
|
puts f.body
|
32
32
|
|
33
|
+
To search fortunes:
|
34
|
+
|
35
|
+
require 'rubygems'
|
36
|
+
require 'linux_fortune'
|
37
|
+
fs = LinuxFortune.search("develop")
|
38
|
+
puts "#{fs.size} hits:"
|
39
|
+
fs.each do |f|
|
40
|
+
puts f.source
|
41
|
+
puts f.body
|
42
|
+
end
|
43
|
+
|
33
44
|
== REQUIREMENTS:
|
34
45
|
|
35
46
|
* fortune must be installed, with some fortune db modules
|
data/Rakefile
CHANGED
@@ -2,9 +2,9 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'echoe'
|
4
4
|
|
5
|
-
Echoe.new('linux_fortune', '0.0.
|
5
|
+
Echoe.new('linux_fortune', '0.0.5') do |p|
|
6
6
|
p.description = "A gem that provides a wrapper for the linux fortune program"
|
7
|
-
p.url = "http://
|
7
|
+
p.url = "http://srejbi.info/posts/5_linux_fortune"
|
8
8
|
p.author = "George Schreiber"
|
9
9
|
p.email = "gy.schreiber @nospam@ mobility.hu"
|
10
10
|
p.ignore_pattern = ["tmp/*", "script/*"]
|
data/lib/linux_fortune.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
module LinuxFortune
|
2
2
|
# <tt>@@binary_path</tt> - path to the 'fortune' binary
|
3
|
-
#mattr_accessor :binary_path
|
4
3
|
@@binary_path = "/usr/bin/fortune"
|
5
4
|
|
6
5
|
# sets the path of the linux fortune program ("/usr/bin/fortune" by default)
|
@@ -117,27 +116,52 @@ module LinuxFortune
|
|
117
116
|
|
118
117
|
# The Fortune class is basicly 2 strings, source and body
|
119
118
|
Fortune = Class.new do
|
119
|
+
# attribute accessors
|
120
|
+
attr_reader :body, :source
|
121
|
+
|
120
122
|
# pass the string from the fortune program
|
121
123
|
def initialize(fortunestring)
|
122
124
|
# check lines of the string, extract source and separate from the rest of the body
|
123
|
-
|
124
|
-
|
125
|
-
fortunestring.each do |
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
125
|
+
temp_source = ""
|
126
|
+
temp_body = ""
|
127
|
+
fortunestring.each do |fortune_line|
|
128
|
+
# in fortune strings, source is a path included in brackets
|
129
|
+
if fortune_line.match(/\(.*\)/) and temp_source.empty?
|
130
|
+
temp_source = fortune_line.gsub(/(^\()|(\)$)/, "").strip
|
131
|
+
else # if not a source
|
132
|
+
# it is a body line, unless it is a 'field separator' - a line with a single percent sign
|
133
|
+
temp_body += fortune_line unless fortune_line.match(/^%\n/)
|
130
134
|
end
|
131
135
|
end
|
132
|
-
@source =
|
133
|
-
@body =
|
136
|
+
@source = temp_source
|
137
|
+
@body = temp_body
|
134
138
|
end
|
135
|
-
# attribute accessors
|
136
|
-
|
137
|
-
attr_reader :body, :source
|
138
139
|
|
139
140
|
# gets the fortune text (alias for body)
|
140
141
|
alias_method(:to_s, :body)
|
142
|
+
|
143
|
+
# processes a fortune search output string and returns an array of fortunes
|
144
|
+
def self.fortunes(fortunesstring)
|
145
|
+
ret = []
|
146
|
+
# check lines of the string, extract source and separate from the rest of the body
|
147
|
+
temp_source = ""
|
148
|
+
temp_body = ""
|
149
|
+
# parse results string
|
150
|
+
fortunesstring.each do |fortunes_line|
|
151
|
+
if fortunes_line.strip.match(/^%$/) # field separator?
|
152
|
+
if temp_source != "" and temp_body != ""
|
153
|
+
fortunesource = "#{temp_source}\n%\n#{temp_body}"
|
154
|
+
ret << Fortune.new(fortunesource)
|
155
|
+
end
|
156
|
+
temp_body = ""
|
157
|
+
elsif fortunes_line.match(/^\(.*\)$/) # source field?
|
158
|
+
temp_source = fortunes_line.strip
|
159
|
+
else # if not a source or a separator
|
160
|
+
temp_body += fortunes_line
|
161
|
+
end
|
162
|
+
end
|
163
|
+
ret
|
164
|
+
end
|
141
165
|
end
|
142
166
|
|
143
167
|
|
@@ -160,7 +184,7 @@ module LinuxFortune
|
|
160
184
|
# executes the fortune program
|
161
185
|
def self.fortune(sources = nil)
|
162
186
|
#puts "executing #{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 { |
|
187
|
+
`#{self.binary_path} -c #{fortune_options} #{sources.each { |source| source.to_s }.join(" ") unless sources.nil?} 2>&1`
|
164
188
|
end
|
165
189
|
|
166
190
|
# generates a fortune message
|
@@ -170,8 +194,16 @@ module LinuxFortune
|
|
170
194
|
end
|
171
195
|
|
172
196
|
# searches fortune sources and returns hits
|
173
|
-
|
174
|
-
|
197
|
+
# <tt>pattern</tt> - search pattern (grep-like)
|
198
|
+
# <tt>sources</tt> - array of sources to be searched (all if not specified)
|
199
|
+
def self.search(pattern = nil, sources = nil)
|
200
|
+
# reset long / short filters
|
201
|
+
LinuxFortune.long = false
|
202
|
+
LinuxFortune.short = false
|
203
|
+
# run fortune
|
204
|
+
results = `#{self.binary_path} -c -m "#{pattern.gsub(/"/, '\\"')}" #{fortune_options} #{sources.each { |source| source.to_s }.join(" ") unless sources.nil?} 2>&1`
|
205
|
+
# process results
|
206
|
+
LinuxFortune::Fortune.fortunes(results)
|
175
207
|
end
|
176
208
|
|
177
209
|
protected
|
data/linux_fortune.gemspec
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{linux_fortune}
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.5"
|
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-
|
10
|
+
s.date = %q{2010-03-30}
|
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"]
|
14
14
|
s.files = ["History.txt", "Manifest", "README.rdoc", "Rakefile", "lib/linux_fortune.rb", "test/test_helper.rb", "test/test_linux_fortune.rb", "linux_fortune.gemspec"]
|
15
|
-
s.homepage = %q{http://
|
15
|
+
s.homepage = %q{http://srejbi.info/posts/5_linux_fortune}
|
16
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Linux_fortune", "--main", "README.rdoc"]
|
17
17
|
s.require_paths = ["lib"]
|
18
18
|
s.rubyforge_project = %q{linux_fortune}
|
data/test/test_linux_fortune.rb
CHANGED
@@ -84,4 +84,15 @@ class TestLinuxFortune < Test::Unit::TestCase
|
|
84
84
|
fortunes << LinuxFortune.generate( sources )
|
85
85
|
assert !fortunes.empty?
|
86
86
|
end
|
87
|
+
|
88
|
+
# test that search executes, array of fortunes is returned
|
89
|
+
def test_search
|
90
|
+
fortunes = LinuxFortune.search('develop', ['chucknorris'])
|
91
|
+
assert fortunes.is_a?(Array)
|
92
|
+
assert fortunes.size > 0
|
93
|
+
fortunes.each do |fortune|
|
94
|
+
assert fortune.is_a?(LinuxFortune::Fortune)
|
95
|
+
assert fortune.source.include?('chucknorris')
|
96
|
+
end
|
97
|
+
end
|
87
98
|
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
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 5
|
9
|
+
version: 0.0.5
|
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-
|
38
|
+
date: 2010-03-30 00:00:00 +02:00
|
39
39
|
default_executable:
|
40
40
|
dependencies: []
|
41
41
|
|
@@ -58,7 +58,7 @@ files:
|
|
58
58
|
- test/test_linux_fortune.rb
|
59
59
|
- linux_fortune.gemspec
|
60
60
|
has_rdoc: true
|
61
|
-
homepage: http://
|
61
|
+
homepage: http://srejbi.info/posts/5_linux_fortune
|
62
62
|
licenses: []
|
63
63
|
|
64
64
|
post_install_message:
|
metadata.gz.sig
CHANGED
Binary file
|