Ruby Quiz wrote:
> Write a Ruby program such that given a certain argument to the program it
> will return the current temperature of that location.
I still haven't done last week's metakoans, but I thought to myself, "Dave,"
(because I always address myself by name in my thoughts). "Dave," I thought,
"a universal Ruby-based indicator of the current temperature that works in
any location on any Ruby platform would be a great boon not only to you, but
to the entire Ruby community. In fact, why stop at the temperature? Ruby has
the power to turn almost any device into a fully functional weather station,
measuring rain, wind and snow. The world will be amazed."
So, thinking of you all, I wrote the code I now humbly present.
Cheers,
Dave.
#!/usr/bin/ruby
#
# Current Weather
#
# A response to Ruby Quiz #68 [ruby-talk:181420]
#
# This script basically turns your Ruby device into a weather machine. It
# leverages the latest technology to enable most laptops, PDAs, etc. to
capture
# meterorological metrics.
#
# WARNING: this program has a bug resulting in an infinite loop on
non-portable
# platforms.
#
# Please ONLY EXECUTE THIS PROGRAM ON PORTABLE DEVICES.
#
# Author: Dave Burt <dave at burt.id.au>
#
# Created: 23 Oct 2005
#
require 'highline/import'
# Work around bug
agree("Are you using a portable Ruby device? ") or
abort("Sorry, this program has not yet been ported to your platform.")
# Calibrate instrumentation
begin
say "Go outside."
end until agree("Are you outside now? ")
# Ascertain cloud cover
if agree("Is your Ruby device casting a defined shadow? ")
say "It's sunny."
else
say "It's overcast."
end
# Capture rainfall
if agree("Are your Ruby device or your umbrella wet? ")
say "It's raining."
else
say "It's fine."
end
# Weigh other precipitation
if agree("Is your Ruby device becoming white? ")
say "It's snowing."
else
say "It's not snowing."
end
# Discern current temperature
if agree("Are your fingers getting cold? ")
say "It's cold."
else
say "It's warm."
end
# Measure wind speed
if agree("Do you feel lateral forces on your Ruby device? ")
say "It's windy."
else
say "It's calm."
end
say "This weather report has been brought to you by Ruby, the letter D,"
say "and the number 42."