Cuprins
În prima parte a tutorialului nostru am reușit să facem programul nostru să preia un fișier text și să genereze blocuri cu paragrafele pe care le conținea, am reușit, de asemenea, să-l facem să aibă capacitatea de a exporta ceea ce am construit într-un fișier extern.A doua iterație
Așa cum am spus la început, trebuie să facem cel mai modular program și pentru a realiza acest lucru trebuie să ne îndeplinim cod orientat obiect.
Pentru aceasta trebuie să facem abstracțiile necesare, astfel încât să putem construi clase care să conțină metodele care ne ating obiectivele.
Cerințe
Să facem o listă a componentelor pe care trebuie să le construim, cu aceasta vom ști ce trebuie să avem pentru ca programul nostru să fie mai complet:
- A analizor, acest obiect ne va permite să citim textul și să gestionăm celelalte clase.
- Reguli, Vom face o regulă pentru fiecare tip de bloc, aceasta ne va face capabili să detectăm ce tip de bloc avem și ce format ar trebui să îi aplicăm.
- Filtre, cu ele vom încorpora expresii regulate pentru a putea gestiona unele elemente interne.
- Manipulatori, aceste manipulatoare vor fi utilizate de analizor pentru a genera ieșirea procesată. Fiecare manipulant va putea gestiona un alt tip de etichete.
Această clasă ne va permite să gestionăm anumite tipuri de etichete pentru ieșiri, să vedem codul pe care îl poate conține:
Atunci trebuie să construim o super-clasă Manipulatori, care ne va permite să gestionăm diferitele manipulatori de care avem nevoie. Pentru aceasta vom vedea următorul cod:
Handler de clasă: def callback (self, prefix, nume, * args): method = getattr (self, prefix + nume, None) dacă apelabil (method): return method (* args) def start (self, name): self. callback ('start_', name) def end (self, name): self.callback ('end_', name) def sub (self, name): def substitut (match): result = self.callback ('sub_', nume, potrivire) implicit = match.group (0) rezultat de returnare sau substituire de returnare implicită
Dacă facem acum un mic exercițiu, putem vedea progresul nostru până acum:
>>> din handlers import HTMLRenderer >>> handler = HTMLRenderer () >>> import re >>> re.sub (r '\ * (. +?) \ *', handler.sub ('accent'), ' Acesta * este * un test ')' Acesta este un dovada '
După cum vedem în apelul anterior, importăm mai întâi clasa noastră HTMLRenderer ce este al nostru manipulant, apoi importăm re cu care vom trata expresiile regulate, apoi mergem la re.sub expresia și metoda cu care ar trebui să fie aplicată, apoi textul și în cele din urmă vedem că rezultatul a generat codul HTML necesar.
Reguli
Odată ce avem gestionarii, este timpul să facem regulile, acestea ne vor ajuta să acordăm o destinație diferitelor blocuri, totuși, trebuie să fie orientat obiect, astfel încât să nu ajungem cu un număr mare de blocuri. cuibărit dacă pentru a valida toate cazurile.
De asemenea, trebuie să avem o super-clasă care gestionează regulile noastre, să vedem următorul cod care conține super-clasa.
class Regula: def action (self, block, handler): handler.start (self.type) handler.feed (bloc) handler.end (self.type) return True
După cum vedem metoda acțiune () primește blocul și tipul de handler pe care trebuie să îl utilizeze, cu acesta va putea distinge ce bloc trebuie să aplice la ceea ce primește prin parametri și astfel să finalizeze codul care trebuie tipărit.
Cu aceasta terminăm tutorialul și lăsăm pe seama tuturor să continue până când avem proiectul gata în conformitate cu liniile directoare date la început în prima parte a acestui tutorial.V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv