Python - HTML oluşturucu, bölüm 2

İçindekiler
Eğitimimizin ilk bölümünde programımızın bir metin dosyası alıp içerdiği paragraflarla bloklar oluşturmasını sağladık, ayrıca harici bir dosyada oluşturduklarımızı dışa aktarabilme özelliğine de sahip olmasını sağladık.
İkinci yineleme
Başta söylediğimiz gibi, yapmamız gereken en modüler program ve bunu başarmak için çalışmalarımızı yürütmeliyiz. nesne yönelimli kod.
Bunun için gerekli soyutlamaları yapmalıyız ki amaçlarımıza ulaşan metotları içeren sınıflar oluşturabilelim.
Gereksinimler
İnşa etmemiz gereken bileşenlerin bir listesini yapalım, bununla programımızın daha eksiksiz olması için neye sahip olmamız gerektiğini bileceğiz:
  • A ayrıştırıcı, bu nesne, metni okumamıza ve diğer sınıfları işlememize izin verecek.
  • Tüzük, Her blok türü için bir kural oluşturacağız, bu bize ne tür bir bloğa sahip olduğumuzu ve ona hangi formatı uygulamamız gerektiğini tespit etmemizi sağlayacaktır.
  • filtreler, Onlarla, bazı dahili öğeleri işleyebilmek için düzenli ifadeleri dahil edeceğiz.
  • işleyiciler, bu işleyiciler tarafından kullanılacak ayrıştırıcı işlenmiş çıktıyı oluşturmak için. Her işleyici farklı türde etiketleri işleyebilecektir.
işleyici
Bu sınıf, çıktılar için belirli etiket türlerini işlememize izin verecek, içerebileceği kodu görelim:

O zaman süper bir sınıf oluşturmalıyız işleyiciler, farklı olanı yönetmemize izin verecek işleyiciler ihtiyacımız olan. Bunun için aşağıdaki kodu göreceğiz:
 sınıf İşleyici: def geri arama (self, prefix, name, * args): method = getattr (self, prefix + name, None) çağrılabilirse (yöntem): dönüş yöntemi (* args) def start (self, name): self. geri arama ('başlangıç_', isim) def bitiş (kendi, isim): kendini geri arama ('bitiş_', isim) def alt (kendi, isim): def ikame (eşleşme): sonuç = kendini.geri arama ('sub_', ad, eşleşme) varsayılan = eşleşme.grup (0) sonuç döndürme veya varsayılan döndürme ikamesi 

Şimdi biraz egzersiz yaparsak, şimdiye kadarki ilerlememizi görebiliriz:
 >>> işleyicilerden HTMLRenderer'ı içe aktar >>> işleyici = HTMLRenderer () >>> yeniden içe aktar >>> re.sub (r '\ * (. +?) \ *', işleyici.sub ('vurgu'),' Bu * bir * denemedir ')' Bu bir kanıt' 

Bir önceki çağrıda gördüğümüz gibi önce sınıfımızı import ediyoruz. HTMLRenderer bizimki ne işleyici, sonra içe aktarıyoruz tekrar normal ifadeleri ele alacağımız, sonra re.sub ifadesi ve uygulanması gereken yöntemi, ardından metni ve son olarak çıktının gerekli HTML kodunu oluşturduğunu görüyoruz.
Tüzük
İşleyicilere sahip olduğumuzda, kuralları koymanın zamanı geldi, farklı bloklara bir hedef vermemize yardımcı olacaklar, ancak çok sayıda blokla sonuçlanmamak için nesne yönelimli olmalıdır. eğer iç içe tüm durumları doğrulamak için.
Kurallarımızı yöneten bir süper sınıfımız da olmalı, süper sınıfı içeren aşağıdaki kodu görelim.
 sınıf Kural: def action (self, block, handler): handler.start (self.type) handler.feed (blok) handler.end (self.type) return True 

Yöntemi gördüğümüz gibi eylem () bloğu ve kullanması gereken işleyici tipini alır, bununla hangi bloğun aldığına uygulanması gerektiğini parametrelerle ayırt edebilecek ve böylece yazdırılması gereken kodu sonlandırabilecektir.
Bununla öğreticiyi bitiriyoruz ve bu öğreticinin ilk bölümünde başlangıçta verilen yönergeler uyarınca projeyi hazır hale getirene kadar devam etmeyi herkese bırakıyoruz.Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave