Python - Generatore HTML, parte 2

Sommario
Nella prima parte del nostro tutorial siamo riusciti a fare in modo che il nostro programma prendesse un file di testo e generasse blocchi con i paragrafi in esso contenuti, siamo anche riusciti a fargli avere la possibilità di esportare ciò che abbiamo costruito in un file esterno.
Seconda iterazione
Come abbiamo detto all'inizio, dobbiamo fare il programma più modulare e per raggiungere questo obiettivo dobbiamo svolgere il nostro codice orientato agli oggetti.
Per questo dobbiamo fare le astrazioni necessarie in modo da poter costruire classi che contengano i metodi che raggiungono i nostri obiettivi.
Requisiti
Facciamo un elenco dei componenti che dobbiamo costruire, con questo sapremo cosa dobbiamo avere in modo che il nostro programma sia più completo:
  • UN analizzatore, questo oggetto ci permetterà di leggere il testo e gestire le altre classi.
  • Regole, Faremo una regola per ogni tipo di blocco, questo ci consentirà di rilevare che tipo di blocco abbiamo e quale formato dovremmo applicare ad esso.
  • Filtri, con loro incorporeremo espressioni regolari per poter gestire alcuni elementi interni.
  • Gestori, questi gestori saranno utilizzati dal analizzatore per generare l'output elaborato. Ogni gestore sarà in grado di gestire un diverso tipo di etichette.
Gestore
Questa classe ci permetterà di gestire alcuni tipi di etichette per gli output, vediamo il codice che può contenere:

Allora dobbiamo costruire una super classe Gestori, che ci permetterà di gestire le diverse gestori di cui abbiamo bisogno. Per questo vedremo il seguente codice:
 Gestore della classe: def callback (self, prefix, name, * args): metodo = getattr (self, prefix + name, None) if callable (method): return metodo (* args) def start (self, name): self. callback ('start_', name) def end (self, name): self.callback ('end_', name) def sub (self, name): def sostituzione (match): risultato = self.callback ('sub_', nome, corrispondenza) default = match.group (0) restituisce il risultato o restituisce la sostituzione predefinita 

Se ora facciamo un piccolo esercizio possiamo vedere i nostri progressi finora:
 >>> from handlers import HTMLRenderer >>> handler = HTMLRenderer () >>> import re >>> re.sub (r '\ * (. +?) \ *', handler.sub ('emphasis'),' Questo * è * un test ')' Questo è un prova' 

Come abbiamo visto nella chiamata precedente, prima importiamo la nostra classe HTMLRenderer qual è il nostro? gestore, quindi importiamo Rif con cui tratteremo le espressioni regolari, quindi andiamo a re.sub l'espressione e il metodo con cui deve essere applicata, quindi il testo e infine vediamo che l'output ha generato il codice HTML necessario.
Regole
Una volta che abbiamo i gestori, è il momento di fare le regole, ci aiuteranno a dare una destinazione ai diversi blocchi, tuttavia, deve essere orientato agli oggetti in modo da non finire con un gran numero di blocchi annidato se per convalidare tutti i casi.
Dobbiamo anche avere una super classe che gestisca le nostre regole, vediamo il codice seguente che contiene la super classe.
 class Regola: def action (self, block, handler): handler.start (self.type) handler.feed (block) handler.end (self.type) return True 

Come vediamo il metodo azione () riceve il blocco e il tipo di gestore che deve utilizzare, con questo potrà distinguere tramite parametri quale blocco deve applicare a ciò che sta ricevendo e quindi finalizzare il codice che deve essere stampato.
Con questo finiamo il tutorial e lasciamo a tutti di continuare fino a quando non avremo il progetto pronto secondo le linee guida fornite all'inizio nella prima parte di questo tutorial.Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave