Планы по Urvanov Syntax Highlighter

Первоначально Crayon Syntax Highlighter разрабатывался для классического редактора WordPress. Автор плагина, Aram Kocharyan, давно забросил его, поэтому с момента перехода на Gutenberg исходный плагин потерял смысл. Мой плагин более-менее адаптирован под современные реалии. Однако при поиске самих кусков кода для подсветки он до сих пор просто просматривает весь текст поста на предмет наличия тегов pre, что не совсем верно для Gutenberg.

Для правильной подсветки кода в Gutenberg мне нужно переделать Urvanov Syntax Highlighter так, чтобы он рассматривал текст поста не как простыню текста, а как различные блоки. Включать подсветку нужно, соответственно, только для специальных блоков моего плагина, блоков абзаца текста и списков. Остальные блоки нужно оставлять без изменений, чтобы не поломать случайно блоки с поэзией, блоки с преформатированным текстом и остальные.

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

Внутри обработчика my_custom_render (имя, конечно, лучше придумать другое) проверять тип блока и применять подсветку только для тех блоков, где оно действительно нужно. Теоретически, код должен выглядеть подобным образом:

На текущий момент основная проблема, которая у меня есть, состоит в том, что код поиска тегов pre, обработки атрибутов, настроек и формирования подсвеченных блоков кода довольно сложен: он учитывает много разных фич, использует много регулярных выражений, а также он совершенно не покрыт никакими тестами. Менять там что-нибудь довольно сложно.

В будущем предполагается как-нибудь решить эту проблему.

Добавить комментарий

Ваш адрес email не будет опубликован.