2011-02-09 17 views
5

Kodumu belgelemek için reStructuredText kullanıyorum, epydoc aracılığıyla güzel çevrimdışı HTML sayfaları elde etmek için. Sonuçlar parlaktır. Tek dezavantajı, Python etkileşimli kabuğunu kullandığımda, help() işlevinin, belge dizelerinde reST meta verilerini ayrıştırmaması ve bunun yerine, her şeyi olduğu gibi görüntülemesidir.reconsuredText, docstring ve python etkileşimli kabuk

Docstrings'in bazılarını en az şekilde ayrıştırmak için help() işlevinin olması için bir yol var mı?

Italik yazı tipleri veya köprüler oluşturulmasını beklemiyorum, ancak okunabilirliği artırmak için en azından bazı minimum temizleme. help() fonksiyon Eğer yolda bir yerde bir sitecustomize.py modül oluşturarak özelleştirebilirsiniz site modülü tarafından yerleşik ad olarak eklenen

+0

Kendi 'yardım()' yazabilirsiniz. Göründüğü kadar zor değil; sadece bazı [incelemek] (http://docs.python.org/library/inspect.html) kodu ve çağrıyı başlatmak. Gerçekten zor olmaz. – ulidtko

+0

Yardımı özelleştirmeyi kolaylaştırmak() (örn. Pydoc modülünde daha fazla işlevsellik açığa çıkararak), http://bugs.python.org adresinden iyi bir özellik talebinde bulunabilir. – ncoghlan

+0

Bu mevcut soru da ilgi çekici olabilir: http: // stackoverflow.com/questions/1192632/how-to-convert-restructuredtext-to-plain-text (Tam olarak aynı şey değil, alakalı olması için yeterlidir) – ncoghlan

cevap

4

(görünüşte genellikle site paketlerinde tutulur).

Ardından, sitecustomize.py dosyasında istediğiniz kişiselleştirmeleri ekleyin. Eğer help() işlevin kendisinin (görünen) davranışını değiştirmek isterseniz

, bir dekoratör yardım işlevini sarmak, gibi bir şey:

def help_wrapper(func): 
    def inner(*args): 
     results = func(*args) 
     return your_cleanup_function_here(results) 
help = help_wrapper(help) 

Bunun bir yollarından çift kaldırabileceğinden

Kişisel olarak biraz farklı bir çözümü tercih ederim çünkü Temizleme yapılandırmanızın, RestructuredText'te yazılmış 'un olduğunu belirtmek için ne yapacağını söyleyen bir şey yoktur.

def my_help(*args): 
    return your_cleanup_function_here(help(*args)) 

bunu yine de, gerektiğinde orijinal help() işlevine erişebilir Bu şekilde:

Yani sadece bir sarmalayıcı işlevi yaratacak.

Ikaz: sitecustomize.py şeyler yaparken her neyse olarak büyük olasılıkla bazen istenmeyen sonuçlara yol açabilir tüm tercüman oturumu (ve her tercüman oturumu), etkileyecek burada yapmak, dikkatli olun.

İlgili konular