(Первый пост, так что будьте терпимы…)
Недавно я настроил собственный форум на Discourse: https://crucible.hubbe.net/. В основном я очень доволен им. Сообщество посвящено плате типа Arduino, которая используется в основном создателями реквизита. В связи с этим мы часто используем шаблонный код на C++. В частности, мы применяем нечто, называемое «стилем» (style), который конфигурирует отображение света. Стили могут быть сложными, поэтому я написал онлайн-предпросмотрщик/редактор, а затем использовал тему-компонент discourse-linkify, чтобы стили автоматически становились ссылками на редактор. Мне пришлось внести небольшие изменения в компонент темы discourse-linkify, чтобы правильно экранировать символы URL и прочее, что было несложно, и я могу создать pull request с этими изменениями, если это будет интересно.
Результат можно увидеть здесь: StylePtr links - The Crucible - The Crucible
Однако есть проблема…
Некоторый шаблонный код из-за множества символов < и > выглядит немного как HTML, и в какой-то момент Discourse удаляет некоторые из этих «тегов». По сути, похоже, что любое неизвестное слово, заключённое в < >, удаляется. Следующая строка в этом сообщении будет , но без пробелов:
< - здесь находится foo
Сначала я думал, что проблема в компоненте linkify, но после некоторых исследований выяснилось, что недостающие части уже исчезли к моменту запуска linkify. Так что, похоже, лишние теги испарились где-то в процессе обработки?
Я заметил, что в блоках кода (с тройными обратными кавычками и аналогичными) теги сохраняются, но для моих целей было бы лучше, если бы они всегда сохранялись.
В течение какого-то времени я думал, что достаточно будет изменить CODE_BLOCKS_REGEXP в файле discourse/lib/utilities.cs, чтобы это работало, но inCodeBlock используется не из многих мест, так что, возможно, это неверный подход? Кроме того, я пока не разобрался, как именно модифицировать CODE_BLOCKS_REGEXP из плагина или компонента темы.
Какой код на самом деле отвечает за удаление этих тегов?
Какой лучший (наиболее поддерживаемый) способ отключить это?