Python - HTML ģenerators, 2. daļa

Satura rādītājs
Mūsu apmācības pirmajā daļā mums izdevās panākt, lai mūsu programma uzņemtu teksta failu un ģenerētu blokus ar tajā ietvertajām rindkopām, kā arī izdevās nodrošināt iespēju eksportēt to, ko mēs izveidojām ārējā failā.
Otrā atkārtošana
Kā mēs teicām sākumā, mums tas jādara modulārākā programma un, lai to sasniegtu, mums ir jāizpilda savs uz objektu orientēts kods.
Šim nolūkam mums ir jāizdara nepieciešamās abstrakcijas, lai mēs varētu veidot klases, kas satur metodes, kas ļauj sasniegt mūsu mērķus.
Prasības
Izveidosim komponentu sarakstu, kas mums jāveido, un mēs zināsim, kas mums ir jābūt, lai mūsu programma būtu pilnīgāka:
  • A parsētājs, šis objekts ļaus mums lasīt tekstu un rīkoties ar citām klasēm.
  • Noteikumi, Mēs izveidosim noteikumu katram bloka veidam, tas ļaus mums noteikt, kāda veida bloks mums ir un kāds formāts tam jāpiemēro.
  • Filtri, ar tiem mēs iekļausim regulārās izteiksmes, lai varētu apstrādāt dažus iekšējos elementus.
  • Apstrādātāji, šos apstrādātājus izmantos parsētājs lai radītu apstrādāto produkciju. Katrs hendleris tas varēs apstrādāt cita veida etiķetes.
Hendlers
Šī klase ļaus mums apstrādāt noteikta veida izlaides etiķetes, apskatīsim kodu, ko tas var saturēt:

Tad mums jāveido super klase Apstrādātāji, kas ļaus mums pārvaldīt atšķirīgo apstrādātāji ka mums vajag. Šim nolūkam mēs redzēsim šādu kodu:
 klases apstrādātājs: def atzvanīšana (self, prefikss, vārds, * args): method = getattr (self, prefikss + nosaukums, nav), ja var izsaukt (metode): atgriešanās metode ( * args) def start (self, name): self. atzvanīšana ('start_', name) def end (self, name): self.callback ('end_', name) def sub (self, name): def substitution (match): result = self.callback ('sub_', nosaukums, atbilstība) noklusējums = atbilstība.grupa (0) atgriešanās rezultāts vai noklusējuma atgriešanas aizstāšana 

Ja mēs tagad veicam nelielu vingrinājumu, mēs varam redzēt mūsu līdzšinējo progresu:
 >>> no apstrādātājiem importēt HTMLRenderer >>> apstrādātājs = HTMLRenderer () >>> importēt re >>> re.sub (r '\ * (. +?) \ *', handler.sub ('uzsvars'), ' Tas * ir * tests ')' Šis ir pierādījums ” 

Kā redzam iepriekšējā aicinājumā, vispirms mēs importējam savu klasi HTMLRenderer kas ir mūsu hendleris, tad mēs importējam re ar kuru mēs apstrādāsim regulārās izteiksmes, tad mēs ejam uz re.sub izteiksme un metode, ar kuru tā jāpiemēro, tad teksts un visbeidzot mēs redzam, ka izvade ir ģenerējusi nepieciešamo HTML kodu.
Noteikumi
Kad mums ir apstrādātāji, ir pienācis laiks izstrādāt noteikumus, tie palīdzēs mums noteikt galamērķi dažādiem blokiem, tomēr tam jābūt orientētam uz objektu, lai mēs neiegūtu lielu skaitu bloku ligzdoja, ja lai apstiprinātu visus gadījumus.
Mums ir jābūt arī superklasei, kas pārvalda mūsu noteikumus. Apskatīsim šādu kodu, kas satur super klasi.
 klases noteikums: def action (self, block, handler): handler.start (self.type) handler.feed (block) handler.end (self.type) return True 

Kā mēs redzam metodi darbība () saņem bloku un apstrādātāja veidu, kas tam jāizmanto, ar to tā pēc parametriem varēs atšķirt, kuram blokam tas jāpiemēro saņemtajam, un tādējādi pabeigt drukājamo kodu.
Ar to mēs pabeidzam apmācību un atstājam ikviena ziņā turpināt, līdz esam sagatavojuši projektu saskaņā ar šīs apmācības pirmās daļas sākumā sniegtajām vadlīnijām.Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave