Note:
Testo rimosso dalla rev 3 e
Testo aggiunto nella rev4
LunaRss v0.1 – versione originale
Codice LunaRss v0.2?0_2 – refactoring Chiaroscuro
#!/usr/bin/env rubyrequire'net/http'classRss_parserdefinitialize(url)@url_completo=url@url_no_http=@url_completo.gsub(/http\:\/\//,'')@url_http=@url_no_http.gsub(/\/.*/,'')@url_pagina="/"+@url_completo.gsub(%r{http:\/\/.*?\/},'')enddefesegui_parsingh=Net::HTTP.new(@url_http)resp,data=h.get(@url_pagina,nil)data.gsub!(/\0/,'')canale=data.scan(%r{<channel(?!s).*?>.*?(?:<title>(?:<!\[CDATA\[)*(.*?)(?:\]\]>)*</title>.*?)?</channel>}m)titolo=Array.newi=0data.scan(%r{<item(?!s).*?>.*?(?:<title>(?:<!\[CDATA\[)*(.*?)(?:\]\]>)*</title>.*?)?</item>}m)do|x|titolo[i]=xi+=1endlink=Array.newi=0data.scan(%r{<item(?!s).*?>.*?(?:<link>(?:<!\[CDATA\[)*(.*?)(?:\]\]>)*</link>.*?)?</item>}m)do|x|link[i]=xi+=1enddescrizione=Array.newi=0data.scan(%r{<item(?!s).*?>.*?(?:<description>(?:<!\[CDATA\[)*(.*?)(?:\]\]>)*</description>.*?)?</item>}m)do|x|descrizione[i]=xi+=1enddati={'titoli'=>titolo,'links'=>link,'descrizioni'=>descrizione,'canali'=>canale}returndatiendend#######################"Content-type: text/html\r\n\r\n""<html>""<body>"elenco_rss=['http://www.repubblica.it/rss/scienza_e_tecnologia/rss2.0.xml','http://programmazione.it/rss.xml','http://www.hwupgrade.it/rss_news.xml','http://www.hwupgrade.it/rss_articoli.xml','http://www.beppegrillo.it/index.xml']elenco_rss.eachdo|rss_file|rss_da_parsare=Rss_parser.new(rss_file)dati=Hash.newdati=rss_da_parsare.esegui_parsingcanale=dati['canali']titolo=dati['titoli']link=dati['links']descrizione=dati['descrizioni']"<h3>#{canale}</h3>"0.upto(titolo.length)do|i|"<strong><a href=\"#{link[i]}\">#{titolo[i]}</a></strong><br/><font size=\"-1\">#{descrizione[i]}</font><p/>"endend"</body>""</html>"