Hello world

Come è tradizione iniziamo da Hello World, ovvero dalla pagina più semplice possibile. In questa pagina viene presentato il primo esempio della sintassi di Genropy nella versione base e successivamente in versioni più complesse.

Esaminiamo in dettaglio il codice:

class GnrCustomWebPage(object):
  def main(self,root,**kwargs):
      root.h1('hello world!')

Per prima cosa viene definita una classe GnrCustomWebPage che eredita da object. Come vedremo in seguito tale classe ha solo la funzione di un raccoglitore di metodi che verranno in seguito mixati dinamicamente alla pagina in esecuzione.

La classe che andiamo a scrivere può definire tutti i metodi necessari ma in particolare deve definire un metodo main che viene invocato dal sistema per costruire la ricetta da inviare al client.

Il metodo main riceve root che rappresenta il punto di partenza della pagina stessa. Rimandiamo al capitolo sulle strutture per i dettagli relativi a questo tipo di sintassi. Per lo scopo di queste lezioni basta sapere che l’oggetto root che riceviamo è una struttura, ovvero un tipo particolare di Bag e che lo scopo della chiamata main è proprio quello di riempire questa struttura.

Il metodo main può ricevere anche altri argomenti denominati genericamente **kwargs ma per il momento non ce ne occupiamo.

Sull’oggetto root viene poi chiamata la funzione div che provvede ad aggiungere a root un nodo di tipo div (lo stesso vale per gli altri tag html come ad es. h1, b, u). Il primo parametro della funzione, in questo caso la stringa «Hello world» corrisponde al parametro innerHTML.

Proviamo ora a variare font e colore del testo e ad aggiungere dei margini:

In questo esempio usiamo l’attributo style per assegnare alcuni attributi del testo.

In questa versione vediamo come sia possibile definire singolarmente i vari attributi HTML con l’avvertenza di sostituire il simbolo “-“ con “_” come ad esempio “font_size” invece di “font-size”.

Oltre agli attributi standard esistono alcuni attributi per cui è possibile dare una definizione più amichevole rispetto allo standard. Vediamo ad esempio gli attributi rounded e shadow.