osa1 feed

Django'da Markdown ve Pygments kullanmak (2)

September 3, 2010 - Tagged as: python, tr.

Daha önce bu konu hakkında bir yazı yazmıştım. Gayet güzel işliyordu herşey fakat bugün bir arkadaş bir hata bildirdi.

Eğer markdown’dan geçirdiğiniz yazıda <pre ...></pre> tagları varsa, normalde markdown bunlara dokunmuyor. Dolayısıyla daha sonra pygments uygulayabiliyorsunuz sorunsuz şekilde. Ama küçük bir farkla. Örneğin python kodu yazarken, eğer bir blokun içinde kod yazarken, boş bir satır bırakıyorsanız, boş satırdan sonraki kod bloktan dışarı çıkıyor. Örneğin aşağıdaki kod:

class Test:
    def bu_fonksiyon_bloktan_cikiyor():
        pass

Şu anda düzgün gözüken kodda, sitedeki değişiklikleri yapmadan önce fonksiyon bloktan dışarı çıkıyordu. Bunu nasıl çözerim diye araştrırken, Markdown’un aslında kendi pygments eklentisinin olduğunu farkettim(codehilite). Bunu kullanmak için eski template filterınızda markdown’u çağırdığınız yeri markdown.markdown(value, ['codehilite']) şeklinde değiştirmeniz gerekli.

Eğer daha önceden pygments kurduysanız codehilite eklentisinin dosyasından import şeklini kontrol etmeniz yeterli. Bu şekilde aslında daha hızlı olabilir. Önceden markdown’la html taglarını yerleştirdikten sonra, BeautifulSoup ile onu ayrıştırıp, gerekli yerleri pygments’e yolluyordum. Şimdi ise BeautifulSoup’a gerek kalmadan, markdown aşamasında pygments kullanılıyor.