Python - HTML -generator, del 2

Indholdsfortegnelse
I den første del af vores tutorial lykkedes det os at få vores program til at tage en tekstfil og generere blokke med de afsnit, den indeholdt, det lykkedes os også at få det til at eksportere det, vi byggede i en ekstern fil.
Anden iteration
Som vi sagde i begyndelsen, skal vi gøre det det mest modulære program og for at opnå dette skal vi udføre vores objektorienteret kode.
Til dette skal vi lave de nødvendige abstraktioner, så vi kan bygge klasser, der indeholder de metoder, der opnår vores mål.
Krav
Lad os lave en liste over de komponenter, vi skal bygge, med dette ved vi, hvad vi skal have, så vores program er mere komplet:
  • EN parser, dette objekt giver os mulighed for at læse teksten og håndtere de andre klasser.
  • Regler, Vi vil lave en regel for hver type blok, dette vil gøre os i stand til at opdage, hvilken type blok vi har, og hvilket format vi skal anvende på den.
  • Filtre, med dem vil vi inkorporere regulære udtryk for at kunne håndtere nogle interne elementer.
  • Håndterere, disse håndterere vil blive brugt af parser at generere det behandlede output. Hver håndterer det vil kunne håndtere en anden type etiketter.
Handler
Denne klasse giver os mulighed for at håndtere bestemte typer etiketter til output, lad os se koden, som den kan indeholde:

Så skal vi bygge en superklasse Håndterere, der giver os mulighed for at styre de forskellige håndterere som vi har brug for. Til dette vil vi se følgende kode:
 klasse Handler: def callback (self, prefix, name, * args): method = getattr (self, prefix + name, None) if callable (method): return method ( * args) def start (self, name): self. callback ('start_', navn) def end (self, name): self.callback ('end_', name) def sub (self, name): def substitution (match): result = self.callback ('sub_', navn, match) default = match.group (0) returneresultat eller default return substitution 

Hvis vi nu laver en lille øvelse, kan vi se vores fremskridt indtil nu:
 >>> fra håndterere importer HTMLRenderer >>> handler = HTMLRenderer () >>> import re >>> re.sub (r '\ * (. +?) \ *', handler.sub ('vægt'), ' Dette * er * en test ')' Dette er en bevis' 

Som vi ser i det foregående opkald, importerer vi først vores klasse HTMLRenderer hvad er vores håndterer, så importerer vi re som vi vil håndtere de regulære udtryk med, så går vi til re.sub udtrykket og den metode, hvormed det skal anvendes, derefter teksten og endelig ser vi, at output har genereret den nødvendige HTML -kode.
Regler
Når vi har håndtererne, er det tid til at lave reglerne, de vil hjælpe os med at give en destination til de forskellige blokke, men det skal være objektorienteret, så vi ikke ender med et stort antal blokke indlejret hvis at validere alle sager.
Vi skal også have en superklasse, der administrerer vores regler, lad os se følgende kode, der indeholder superklassen.
 klasse Regel: def handling (self, block, handler): handler.start (self.type) handler.feed (block) handler.end (self.type) return True 

Som vi ser metoden handling () modtager blokken og den type handler, den skal bruge, med denne vil den kunne skelne hvilken blok den skal anvende på, hvad den modtager ved hjælp af parametre og dermed færdiggøre den kode, der skal udskrives.
Med dette afslutter vi selvstudiet og lader det være op til alle at fortsætte, indtil vi har projektet klar under de retningslinjer, der blev givet i begyndelsen i den første del af denne vejledning.Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave