Python - HTML-generator, deel 2

Inhoudsopgave
In het eerste deel van onze tutorial zijn we erin geslaagd om ons programma een tekstbestand te laten maken en blokken te genereren met de paragrafen die het bevatte, we zijn er ook in geslaagd om het de mogelijkheid te geven om te exporteren wat we in een extern bestand hebben gebouwd.
tweede iteratie
Zoals we in het begin al zeiden, moeten we doen het meest modulaire programma en om dit te bereiken moeten we onze objectgeoriënteerde code.
Hiervoor moeten we de nodige abstracties maken zodat we klassen kunnen bouwen die de methoden bevatten die onze doelen bereiken.
Vereisten
Laten we een lijst maken van de componenten die we moeten bouwen, hiermee zullen we weten wat we moeten hebben zodat ons programma completer is:
  • EEN parser, met dit object kunnen we de tekst lezen en de andere klassen afhandelen.
  • Reglement, We zullen voor elk type blok een regel maken, hierdoor kunnen we detecteren welk type blok we hebben en welk formaat we erop moeten toepassen.
  • Filters, met hen zullen we reguliere expressies opnemen om enkele interne elementen te kunnen verwerken.
  • afhandelaars, deze handlers worden gebruikt door de parser om de verwerkte output te genereren. Elk afhandelaar het kan een ander type labels aan.
Handler
Met deze klasse kunnen we bepaalde soorten labels voor de uitvoer verwerken, laten we eens kijken welke code deze kan bevatten:

Dan moeten we een superklasse bouwen afhandelaars, waarmee we de verschillende afhandelaars dat we nodig hebben. Hiervoor zien we de volgende code:
 class Handler: def callback (zelf, voorvoegsel, naam, * args): methode = getattr (zelf, voorvoegsel + naam, Geen) indien aanroepbaar (methode): retourmethode (* args) def start (zelf, naam): zelf. callback ('start_', naam) def end (zelf, naam): zelf.callback ('end_', naam) def sub (zelf, naam): def vervanging (overeenkomst): resultaat = zelf.callback ('sub_', naam, match) default = match.group (0) return resultaat of default return vervanging 

Als we nu een kleine oefening doen, kunnen we onze voortgang tot nu toe zien:
 >>> van handlers import HTMLRenderer >>> handler = HTMLRenderer () >>> import re >>> re.sub (r '\ * (. +?) \ *', handler.sub ('nadruk'),' Dit * is * een test ')' Dit is een een bewijs' 

Zoals we in de vorige oproep hebben gezien, importeren we eerst onze klasse HTMLRenderer wat is van ons? afhandelaar, dan importeren we met betrekking tot waarmee we de reguliere expressies gaan afhandelen, dan gaan we naar re.sub de uitdrukking en de methode waarmee het moet worden toegepast, dan de tekst en tenslotte zien we dat de uitvoer de nodige HTML-code heeft gegenereerd.
Reglement
Zodra we de handlers hebben, is het tijd om de regels te maken, ze zullen ons helpen om een ​​bestemming te geven aan de verschillende blokken, het moet echter objectgeoriënteerd zijn zodat we niet eindigen met een groot aantal blokken genest als om alle gevallen te valideren.
We moeten ook een superklasse hebben die onze regels beheert, laten we de volgende code eens bekijken die de superklasse bevat.
 class Regel: def action (self, block, handler): handler.start (self.type) handler.feed (block) handler.end (self.type) return True 

Zoals we de methode zien: actie () ontvangt het blok en het type handler dat het moet gebruiken, hiermee kan het onderscheiden welk blok het moet toepassen op wat het ontvangt door parameters en zo de code af te ronden die moet worden afgedrukt.
Hiermee ronden we de tutorial af en laten we het aan iedereen over om door te gaan totdat we het project klaar hebben volgens de richtlijnen die aan het begin in het eerste deel van deze tutorial zijn gegeven.Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven
wave wave wave wave wave