(Primeira postagem, então me desculpem…)
Recentemente configurei meu próprio fórum Discourse: https://crucible.hubbe.net/ e, em geral, tenho ficado muito satisfeito com ele. A comunidade é voltada para uma placa do tipo Arduino usada principalmente por criadores de adereços (prop makers). Por isso, acabamos usando bastante código C++ com templates. Em particular, usamos algo chamado “style” (estilo), que configura como as luzes aparecem. Os estilos podem ser complicados, então escrevi um editor/visualizador online e, em seguida, usei o componente de tema discourse-linkify para fazer com que os estilos fossem automaticamente vinculados ao editor. Precisei fazer algumas pequenas alterações no componente de tema discourse-linkify para fazer com que os caracteres de URL e afins fossem citados corretamente, o que foi relativamente simples, e posso criar um PR (pull request) com essas alterações se houver interesse.
O resultado pode ser visto aqui: StylePtr links - The Crucible - The Crucible
No entanto, há um problema…
Parte do código com templates acaba parecendo um pouco com HTML por causa de todos os caracteres < e >, e, em algum momento, o Discourse remove algumas dessas “tags”. Basicamente, parece que qualquer palavra desconhecida entre < > é removida. A próxima linha desta postagem será (sem os espaços):
< - o foo está aqui
No início, achei que fosse o componente linkify que estava fazendo algo errado, mas, após algumas investigações, parece que o conteúdo faltante já havia desaparecido antes mesmo do linkify ser executado. Então, acho que as tags extras evaporaram em algum momento do processo de “cozimento” (cooking process)?
Percebi que, em blocos de código (triple-backtick e similares), as tags sobrevivem, mas, para os meus propósitos, seria melhor se elas sempre sobrevivessem.
Por um tempo, pensei que seria suficiente modificar o arquivo discourse/lib/utilities.cs:CODE_BLOCKS_REGEXP para fazer isso funcionar, mas o inCodeBlock não é usado de muitos lugares, então talvez essa não seja a abordagem correta? Além disso, ainda não consegui descobrir como modificar o CODE_BLOCKS_REGEXP a partir de um plugin ou componente de tema.
Qual código é realmente responsável por remover essas tags?
Qual é a melhor maneira (mais suportada) de desativar isso?