md_proc 0.7.0

Новая версия библиотеки — и снова множество нововведений. Конечно же, главным изменением стала поддержка новой версии спецификации CommonMark за номером 0.21. В ней поменялась обработка символа ’, из-за чего пришлось не только переписать значительную часть кода, но и поправить библиотеку комбинаторов парcеров (parsers), на которой базируется md_proc. Второе значительно изменение спецификации — новые правила разбора встроенных html-блоков. На мой взгляд, всё стало проще и логичнее.

Читать далее...
md_proc 0.5.0

Я давно ничего не писал об этом моём проекте. Но это совершенно не значит, что он забыт и заброшен. Конечно, он не в самой активной фазе разработки, тем не менее обновления я публикую с некоторой периодичностью. В первую очередь период связан с обновлениями спецификации CommonMark. Нынешняя версия библиотеки (0.5.0) реализует спецификацию 0.20.

Кроме того, с момента предыдущего поста были добавлены следующие нововведения:

Как обычно, библиотеку можно взять на GitHub или pub.dartlang.

md_proc 0.2.3

Продолжаю работать над библиотекой для работы с CommonMark. Следующий этап — генерация Markdown из AST — готов. Теперь можно использовать библиотеку для автоматического преобразования Markdown. Собственно, это то, к чему я стремлюсь. Но до завершения, к сожалению, ещё далеко. Во-первых, сама спецификация CommonMark ещё не готова, а во-вторых, для использования библиотеки с теми файлами, что у меня уже есть, неплохо было бы реализовать некоторое количество расширений, выходящих за рамки официальной спецификации.

План на ближайшее будущее:

  1. Продолжать следовать изменениям в спецификации.
  2. Реализовать некоторые расширения Markdown из pandoc (формулы, сноски и прочее). Затем преобразовать их в расширения CommonMark по мере их принятия в стандарт.
  3. Код для преобразования абстрактного синтаксического дерева. Я пока не слишком много думал об этом, поэтому всякие советы только приветствуются.

Как обычно, библиотеку можно взять на GitHub или pub.dartlang.

md_proc 0.1.1

Обновил парсер CommonMark, написанный на Dart. Теперь он соответствует версии 0.12 спецификации. Правда один из тестов не проходит, но исключительно из-за ошибки в самом тесте. Ошибку уже поправили, так что следующая версия спецификации выйдет без неё.

Сама спецификация несколько поменялась со времени публикации предыдущей версии парсера. Самое крупное изменение: теперь можно использовать вложенные emphasis и strong. Например:

*Это *вложенный* emphasis*

**Это **вложенный** strong**

Не знаю, насколько это применимо на практике, но, видимо, изменению спецификации предшествовало продолжительное обсуждение.

В общем, милости прошу за библиотекой на GitHub или pub.dartlang.

Парсер для CommonMark

Все началось с того, что мне понадобился парсер для Markdown, который строит AST, а не пытается сразу выдавать готовый HTML. А ещё было желательно, чтобы парсер был написан на Dart, так как проект я собирался писать именно на этом языке. Но, к сожалению, обнаружился только один парсер для Markdown, написанный на Dart. Поэтому идею пришлось отложить до лучших времён и сесть за написание своего велосипеда парсера.

Примерно через неделю после начала появилась спецификация CommonMark, которая помогла избавиться от некоторых вопросов, правда ценой полного переписывания: некоторые концепции из спецификации никак не хотели ложиться на уже написанный код.

И вот, спустя месяц, я рад вам представить свою реализацию, которая проходит все тесты CommonMark. И да, она позволяет получить AST для последующей обработки.

Библиотека md_proc на GitHub, pub.dartlang.

В самых ближайших планах реализовать восстановление Markdown обратно из AST, а также поддержка самых распространённых и нужных расширений, вроде TexMath, Footnotes, Smart punctuation и других. Ну и, конечно, поддержка совместимости с CommonMark тоже обязательно будет, тем более, что CommonMark ещё должен немного поменяться до того, как будет опубликована официальная версия 1.0. И уже после этого можно будет вернуться к первоначальному проекту.

← Старше