Какова каноническая реализация уценки?
Проблема с написанием собственного анализатора Markdown в Clojure заключается в том, что Markdown не является хорошо определенным языком. Нет никакой "официальной" грамматики, просто неофициальное описание "Вот как это работает" и действительно уродливая эталонная реализация в Perl. http://briancarper.net/blog/415/
Я вижу спецификацию Gruber здесь и реализацию здесь.
Это реализация, которая выигрывает тест рейтинга google здесь
Тогда есть peg-markdown, который, как представляется, решает проблему "нет грамматики" - но это не каноническая реализация.
Мой вопрос: какова каноническая реализация уценки? (Тот, который все говорят, определяет стандарт).
EDIT:
Я признаю, что "нет канонического стандарта". Я ищу следующую лучшую вещь.
Ответ выглядит как showdown.js, но есть проблемы с ним.
(используя определение канонического - это то, которое каждый говорит, определяет стандарт).
На это ссылается здесь и на github здесь.
Я заберу pagedown (как и в случае с @deceze), поскольку он исправляет ошибки в вскрытии и быть немного ближе к оригиналу Грубера.
Ответы
Ответ 1
Я считаю, что Грубер является оригинальным и со-каноническим (см., например, его "Представление Markdown" ), а затем люди расширили его оттуда. Я думаю, что некоторые расширения чаще встречаются, чем другие, поэтому, вероятно, стоит посмотреть, что у некоторых хорошо используемых пакетов есть над его оригиналом.
Ответ 2
Проект Проект CommonMark пытается решить некоторые проблемы спецификации Markdown, в частности некоторые неоднозначности. Он поставляется с эталонной реализацией, но это, очевидно, просто эталонная реализация для CommonMark, а не для Markdown в целом. Он может стать стандартом де-факто в ближайшие годы, поскольку некоторые крупные пользователи участвуют в этом проекте, но он может стать еще одним диалектом среди многих, и в этом случае эталонная реализация добавит мало значения.