Python - generátor HTML, část 2

Obsah
V první části našeho tutoriálu se nám podařilo přimět náš program, aby vzal textový soubor a generoval bloky s odstavci, které obsahoval, také se nám podařilo zajistit, aby měl schopnost exportovat to, co jsme vytvořili v externím souboru.
Druhá iterace
Jak jsme řekli na začátku, musíme to udělat nejmodulárnější program a abychom toho dosáhli, musíme provést své objektově orientovaný kód.
K tomu musíme vytvořit nezbytná abstrakce, abychom mohli vytvářet třídy, které obsahují metody, které dosahují našich cílů.
Požadavky
Udělejme si seznam komponent, které potřebujeme vytvořit, díky čemuž budeme vědět, co musíme mít, aby byl náš program úplnější:
  • A analyzátor, tento objekt nám umožní číst text a zpracovávat ostatní třídy.
  • Pravidla, Pro každý typ bloku vytvoříme pravidlo, díky kterému budeme schopni zjistit, jaký typ bloku máme a jaký formát bychom na něj měli použít.
  • Filtry, s nimi začleníme regulární výrazy, abychom byli schopni zvládnout některé vnitřní prvky.
  • Manipulátory, tyto ovladače budou používány analyzátor ke generování zpracovaného výstupu. Každý psovod bude schopen zpracovat jiný typ štítků.
Psovod
Tato třída nám umožní zpracovat určité typy popisků pro výstupy, podívejme se na kód, který může obsahovat:

Pak musíme vybudovat super třídu Manipulátory, to nám umožní spravovat různé manipulátory že potřebujeme. K tomu uvidíme následující kód:
 obslužná rutina třídy: 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_', name) def end (self, name): self.callback ('end_', name) def sub (self, name): def substitution (match): result = self.callback ('sub_', name, match) default = match.group (0) return result or default return substitution 

Pokud nyní provedeme malé cvičení, můžeme vidět náš dosavadní pokrok:
 >>> z obslužných rutin importovat HTMLRenderer >>> handler = HTMLRenderer () >>> importovat znovu >>> re.sub (r '\ * (. +?) \ *', handler.sub ('důraz'), ' This * is * a test ')' This je důkaz' 

Jak vidíme v předchozím hovoru, nejprve importujeme naši třídu HTMLRenderer co je naše psovod, poté importujeme re se kterými budeme pracovat s regulárními výrazy, pak přejdeme na re.sub výraz a způsob, jakým by měl být aplikován, pak text a nakonec vidíme, že výstup vygeneroval potřebný HTML kód.
Pravidla
Jakmile máme obsluhy, je čas vytvořit pravidla, pomohou nám určit cíl pro různé bloky, ale musí být objektově orientované, abychom neskončili s velkým počtem bloků vnořené, pokud k ověření všech případů.
Musíme mít také super třídu, která spravuje naše pravidla, podívejme se na následující kód, který super třídu obsahuje.
 třída Pravidlo: def action (self, block, handler): handler.start (self.type) handler.feed (block) handler.end (self.type) return True 

Jak vidíme metodu akce () přijme blok a typ obslužné rutiny, kterou musí použít, podle toho bude schopen rozlišit, který blok musí použít na to, co přijímá, podle parametrů, a tak dokončit kód, který musí být vytištěn.
Tímto tutoriál dokončíme a necháme na každém, aby pokračoval, dokud nebudeme mít projekt připravený podle pokynů uvedených na začátku v první části tohoto tutoriálu.Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave