2012-08-13 10 views
17

Czy ktoś wie o działającej implementacji Pythona GFM?Github-Flavored-Markdown w Pythonie

Obecnie używam javascript renderer. To działa, ale właściwym narzędziem do wykonania zadania byłby prawdziwy renderer w języku Python. (FS to aplikacja Django)

Próbowałem połączyć this z this. Ale wyniki nie są tak dobre.

odpowiedni kod ->https://github.com/freedomsponsors/www.freedomsponsors.org/blob/master/djangoproject/core/models.py (patrz IssueComment.toHTML)

Podświetlanie składni jest plus.

Odpowiedz

16

GitHub używa Redcarpet który jest naprawdę Ruby wiązaniami zbudowany przez github dla Sundown.

Istnieje powiązanie dla Sundown w języku Python o nazwie Misaka. Jeśli chcesz mieć coś bliżej do renderera, którego używa github, ale w Pythonie, możesz zacząć od tego.

Do podświetlania kodu można użyć Pygments with Misaka.

+0

Nice! Sprawdzę to. Dzięki! –

+0

Rzeczywiście, po prostu działa. Dzięki (wkrótce będzie demonstracja) –

+1

[This] (https://github.com/freedomsponsors/www.freedomsponsors.org/issues/4) to sposób, w jaki to zrobiłem. Jeśli ktoś inny zamierza użyć misaki, proszę uważaj na [to] (https://github.com/FSX/misaka/issues/25#issuecomment-8295218) –

2

Grip jest również całkiem fajne i dostaje zadanie.

6

Python-Markdown plus py-gfm wydaje się działać dobrze. Ma on tę zaletę, że jest nieco wystandaryzowany w ekosystemie Python - dostępnych jest kilka rozszerzeń Python-Markdown, a następnie dodatkowe pakiety, takie jak django_markdown, mogą być budowane na szczycie Python-Markdown i korzystać z jego rozszerzeń.

+0

Jako nowy opiekun [py-gfm] (https://github.com/zopieux/py-gfm), spróbuję dodać brakujące funkcje w przyszłych wydaniach. – zopieux

1

W przypadku, gdy jest to pomocne dla innych, po prostu chciałem, aby Github składał się z kodu, np.

```python 
def hello(): 
    print('this should be rendered properly') 
``` 

Python Markdown faktycznie dostarczany z rozszerzeniem zrobić to już nazywa Fenced Code Blocks że działa dobrze.

Wystarczy nazwać tak:

page_content = markdown.markdown(source, extensions=[FencedCodeExtension()])