def to_s
s = StringIO.new
deg = Degree
def pf(f,d=2)
f = f.scalar if Unit === f
s = sprintf("%.#{d}f",f)
s.gsub!(/(\.0+|(\.\d*[1-9])0+)$/, '\2')
s
end
s.puts raw if raw
s.puts "Conditions at: #{station}"
if temp
s.puts "Temperature/Dewpoint: #{pf temp.to('tempC').abs}#{deg}C / #{pf dewpoint.to('tempC').abs}#{deg}C (#{pf tempF.abs}#{deg}F / #{pf dewpoint.to('tempF').abs}#{deg}F) [RH #{pf rh,1}%]"
end
if altimiter
s.puts "Pressure (altimiter): #{pf altimiter.to('inHg').abs} inches Hg (#{pf altimiter.to('millibar').abs, 1} mb)"
end
if wind
s.puts "Winds: #{wind}"
end
if visibility
s.puts "Visibility: #{visibility}"
end
if sky
s.puts "Clouds: #{sky.first}"
sky[1..-1].each do |c|
s.puts " "*22 + c.to_s
end
end
if rvr and not rvr.empty?
s.puts "Runway Visual Range: #{rvr.first}"
rvr[1..-1].each do |r|
s.puts " "*22 + r.to_s
end
end
if rmk
s.puts "Remarks: #{rmk}"
end
s.string
end