Hello,
This is my solution to the Sentence length solution on the StartProblems
page of the RubyGarden wiki.
I learned a few things from doing this simple exercise and I was
just wondering if anyone would be willing to help me refactor the
code as a further learning exercise.
I'm not looking for a new solution, I just want to make this existing
solution better, and
improve the OO of the code.
You can post replys to this email, or you can post replys
on my blog, where I also have this posted.
Either will be very appreciated!
class Evaluator
def initialize(file)
@reg = []
@char = ""
File.open(file, 'r') do |f|
f.each do |line|
@char << line
end
end
split_and_strip(@char)
end
#split every sentence, then strip the newline characters.
def split_and_strip(str)
str.split(/[.?!]\s*/).each do |x|
@reg << x.gsub("\n", " ")
end
end
def average?
@char = @reg.inject(0) do |m,o|
m + o.length
end
print "\nThe average sentence is ", (@char / @reg.length), "
characters long."
end
def biggest?
@char = @reg.inject(@reg[0].length) do |m,o|
if m >= o.length
m
else
o.length
end
end
print "\nThe biggest sentence is ", (@char), " characters long."
end
def smallest?
@char = @reg.inject(@reg[0].length) do |m,o|
if m <= o.length
m
else
o.length
end
end
print "\nThe smallest sentence is ", (@char), " characters long."
end
end
e = Evaluator.new("words.txt")
e.smallest?
e.average?
e.biggest?
···
--
Alex Combas
http://noodlejunkie.blogspot.com/