Forwarded solution from Paolo Bonzini:
···
Date: March 2, 2008 8:26:21 AM EST
Subject: Re: Hello, world? (#158)Hi, I write privately because when the 48 hours have passed I'll
probably be asleep. Here's my solution, inspired by the recent thread
on monkeypatching. It makes all messages printed more happy and
interesting by capitalizing them and adding an exclamation mark at the
end.It's a pity that Kernel#puts reimplements $stdout.puts instead of just
delegating it. Of course, I fixed that with another monkeypatch.class IO
alias_method :orig_puts, :puts
def puts *args
args = [""] if args.length == 0
args.each do |x|
if x.class == Array
puts *x
else
x = x.gsub(/[^!]$/) { |final| final + "!" }
x = x.gsub(/\w+/) { |w| w.capitalize }
orig_puts x
end
end
end
endclass << self
def puts *args
$stdout.puts *args
end
endputs "hello, world"