From: Esmail Bonakdarian Date: 2006-10-06T04:55:11+09:00 Subject: 1st program -- how would you improve this? Hi, I just wrote my first Ruby program and I would be very interested in some feedback as to style and how to write things more in the Ruby-way. I know I could use more methods and/or possibly classes, and that will happen, but for now I would like to hear what betrays my programming style coming from other languages. Thanks, Esmail Briefly, this tiny program grabs a HTML for a random date within the last 10 years from the Astro Picture of the Day (APOD) site (http://antwrp.gsfc.nasa.gov/apod/archivepix.html). It then parses the HTML file to extract the name of the larger .jpg or .gif file (there is usually a smaller version too), generates the correct URL for the image, and then fires up eog (a Linux program to display images) to fetch and display the image. Works .. but it's not pretty, at least in terms of lack of methods etc. Other ways to improve this? ---------------- #!/usr/bin/ruby require 'net/http' # method found on-line, slightly modified def random_date(years_back=5) year = Time.now.year - rand(years_back) - 1 month = rand(12) + 1 day = rand(31) + 1 year = year.to_s.gsub(/20|19/,'') sprintf("%02s%02d%02d", year,month,day) end r_date=random_date(10) # go back 10 years puts r_date # # get the html file from the apod site # text=Net::HTTP.start( 'antwrp.gsfc.nasa.gov', 80 ) do |http| http.get( "/apod/ap#{r_date}.html" ).body end # # get the HTML and process contents line by line # found_title = false found_image = false text.each { |line| # # find the title of the current pic # if !found_title && line =~ //i title = $' puts "----------------------------------------------" printf("%s\n", title.strip) puts "----------------------------------------------\n\n" found_title = true end # # now start searching for the image name # if !found_image && line =~ /\.(jpg|gif) *\">/i if line.include? "jpg" # is there a way to case do insensitve comparison here? image = $`+".jpg" else image = $`+".gif" end url="http://apod.nasa.gov/apod/" image=image.gsub(/<a +href="/i,'') fetch_url=url+image printf("%s\n", fetch_url) found_image = true system("eog " + fetch_url + " >& /dev/null &") end }