2012-04-24 7 views

Odpowiedz

13

niektórych implementacjach Przecena – w szczególności po stronie serwera C# wersji przepełnienie stosu za MarkdownSharp (gdzie jest optional behavior) i po stronie klienta JavaScript wersja PageDown, ale także na przykład GitHub's flavor – odeszły od specyfikacji Markdown z tego samego powodu, który opisujesz.

Aby uzyskać informacje na temat historii tego przejścia, zobacz dwa blogi: Three Markdown Gotchas i Markdown, One Year Later.

Ponieważ jest to powszechnie komentowana krytyka Markdown, prawdopodobnie istnieje więcej implementacji, które czynią to zachowanie możliwym do ustawienia przez użytkownika, lub po prostu pójdą z bardziej restrykcyjną wersją. To zależy od tego, z której wersji korzystasz.

Jeśli używasz portu opartego na oryginalnej implementacji Perla Johna Grubera (tj. "Tony wersji zamiennej regex"), samodzielne wprowadzenie tej zmiany powinno być dość łatwe. Odpowiednia funkcja jest prawdopodobnie nazywana _DoItalicsAndBold (oryginalna wersja Perla, Showdown/PageDown), DoItalicsAndBold (MarkdownSharp), _do_italics_and_bold (python-markdown2) lub podobna.

spojrzeć na nasze PageDown version of that function dla surowszych wyrażeń regularnych, które są używane tutaj na przepełnienie stosu:

function _DoItalicsAndBold(text) { 

    // <strong> must go first: 
    text = text.replace(/([\W_]|^)(\*\*|__)(?=\S)([^\r]*?\S[\*_]*)\2([\W_]|$)/g, 
    "$1<strong>$3</strong>$4"); 

    text = text.replace(/([\W_]|^)(\*|_)(?=\S)([^\r\*_]*?\S)\2([\W_]|$)/g, 
    "$1<em>$3</em>$4"); 

    return text; 
} 
Powiązane problemy