Сегодня по поводу внезапно случившегося дня рождения я собираюсь поделиться с вами работой последних несколько месяцев — полностью переделанным блогом.
Новая версия библиотеки — и снова множество нововведений. Конечно же, главным изменением стала поддержка новой версии спецификации CommonMark за номером 0.21. В ней поменялась обработка символа ’, из-за чего пришлось не только переписать значительную часть кода, но и поправить библиотеку комбинаторов парcеров (parsers), на которой базируется md_proc. Второе значительно изменение спецификации — новые правила разбора встроенных html-блоков. На мой взгляд, всё стало проще и логичнее.
Я давно ничего не писал об этом моём проекте. Но это совершенно не значит, что он забыт и заброшен. Конечно, он не в самой активной фазе разработки, тем не менее обновления я публикую с некоторой периодичностью. В первую очередь период связан с обновлениями спецификации CommonMark. Нынешняя версия библиотеки (0.5.0) реализует спецификацию 0.20.
Кроме того, с момента предыдущего поста были добавлены следующие нововведения:
Поддержка умной пунктуации, т.е. автоматическая замена
...
,---
,--
,"
и'
на соответствующий типографический символ.Поддержка автоматический генерации ссылок по имени. Это может быть полезно, например, для разбора markdown из DartDoc-комментариев. Таким образом можно передать парсеру функцию, которая будет заниматься всеми теми ссылками, для которых известно только имя.
Continuous Integration с помощью Travis и покрытие кода на Coveralls. По крайней мере, подключение этих систем к проекту было интересным опытом.
Как обычно, библиотеку можно взять на GitHub или pub.dartlang.
Сегодня я вам расскажу, как современные web-разработчики должны правильно писать вот такую строчку:
<link rel="shortcut icon" href="/favicon.ico">
Продолжаю работать над библиотекой для работы с CommonMark. Следующий этап — генерация Markdown из AST — готов. Теперь можно использовать библиотеку для автоматического преобразования Markdown. Собственно, это то, к чему я стремлюсь. Но до завершения, к сожалению, ещё далеко. Во-первых, сама спецификация CommonMark ещё не готова, а во-вторых, для использования библиотеки с теми файлами, что у меня уже есть, неплохо было бы реализовать некоторое количество расширений, выходящих за рамки официальной спецификации.
План на ближайшее будущее:
- Продолжать следовать изменениям в спецификации.
- Реализовать некоторые расширения Markdown из pandoc (формулы, сноски и прочее). Затем преобразовать их в расширения CommonMark по мере их принятия в стандарт.
- Код для преобразования абстрактного синтаксического дерева. Я пока не слишком много думал об этом, поэтому всякие советы только приветствуются.
Как обычно, библиотеку можно взять на GitHub или pub.dartlang.