md_proc 0.7.0
Среда, 19 августа 2015

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

Важным дополнением стала поддержка нескольких расширений языка, отсутствующих в спецификации. Теперь можно использовать верхний индекс (*e*^*x*^ — ex), нижний индекс (C~2~H~5~OH — C2H5OH) и зачёркивание (~~пример~~ — пример).

Также был причесан код в соответствии с рекомендациями Google. Правда, ради этого пришлось слегка переименовать различные объекты библиотеки: команда разработки Dart утверждает, что константы лучше называть так же, как и остальные переменные в формате camelCase. Поэтому теперь сценарии использования библиотеки выглядят приблизительно так:

import "package:md_proc/md_proc.dart";

void main() {
  Document doc = CommonMarkParser.defaults.parse('Hello world!\n===');
  String res = HtmlWriter.defaults.write(doc);
  print(res); // <h1>Hello world!</h1>
}

В предыдущей версии библиотеки нужно было писать DEFAULT вместо defaults.

Не менее интересно было поковыряться с кодогенерацией. Теперь тесты из спецификации читаются не напрямую из файла спецификации, а конвертируются в Dart с помощью команды dart tool/build.dart и затем используются. А так как больше не нужно читать файлы из файловой системы, то можно прогонять тесты не только на сервере, но и в браузерах. В последних версиях стандартной библиотеки для тестирования это сделать очень просто. Например, такая команда прогонит все тесты на виртуальной машине Dart, в Chrome, в Firefox, а так же в PhantomJs:

pub run test -p 'vm,chrome,firefox,phantomjs'

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

← Пара слов об ÖSDSATrip 2015 →