5Righe Wiki

Vedi tutte le pagine e le modifiche recenti o scarica i sorgenti nella pagina


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.

Updated on March 06, 2007 22:55 by nope (82.49.78.123)