Note:
Testo rimosso dalla rev 2 e
Testo aggiunto nella rev3
5righe Wiki
Di seguito viene mostrata la potenza di ruby realizzando un wiki in sole 5 righe di codice, nella stessa pagina e anche presentata una traduzione del codice in modo che sia più traducibile al lettore.
#!/path/per/ruby -r cgi H='HomePage';B='w7.cgi?n=%s';p=(c=CGI.new('html4')).params;n=p['n'][0]||H d=p['d'][0];t=IO.read(n)rescue '';open(n,'w').puts(t=CGI.escapeHTML(d)) if d c.out{c.h1{n}+c.a(B%H){H}+c.pre{ t.gsub(/([A-Z]\w+){2}/){|w| c.a(B%w){w}}}+ c.form("get"){c.textarea('d'){t}+c.hidden('n',n)+c.submit}}
in forma leggermente piu’ leggibile e’ questo:
#!/path/per/ruby.exe -r cgi H='HomePage' # La prima pagina B='wk5.cgi?nome=%s' # Il link base, wk5.cgi e' il file c=CGI.new('html4') para=c.params # se il parametro non esiste, e vale nil, # viene asegnato H nome=(para['nome'][0] or H) # se stiamo scrivendo la pagina passiamo anche i dati data=para['data'][0] # leggiamo il file, se non esiste catturiamo # l'eccezione e usiamo unoi spazio come testo txt=IO.read(nome) rescue '' # se stiamo scrivendo data != nil if data txt=CGI.escapeHTML(data) #puliamo il codice # e lo scriviamo # pessimo esempio: il file andrebbe chiuso :) open(nome,'w+').puts( txt) if data end # buttiamo sulla connessione: c.out{ # header http vari c.h1{n}+ # nomepagina c.a(B%H){H}+ # B%H= w5.cgi?nome=QualcheNome c.pre{ t.gsub(/([A-Z]\w+){2}/){ |w| c.a(B%w){w} } }+ # il corpo della pagina c.form("get"){ c.textarea('d'){t}+ c.hidden('n',n)+ c.submit } }
Questo esempio ci fa comprendere come sia semplice utilizzare la tecnologia di ruby per tutte le nostre applicazioni basate sul web.