Estamos importando um monte de posts, e o conteúdo frequentemente contém texto como @global ou similar (o tópico da nossa instância de discourse está relacionado a programação, e @ é um símbolo nessa linguagem).
Existe uma maneira agradável e limpa de suprimir o ping de usuários? Não me importo em pré-processar os posts antes de importar.
Como uma espécie de solução alternativa suja, descobri que inserir uma tag bbcode vazia após o @ funciona (como @[b][/b]global). Não parece uma solução muito boa e exigiria que eu analisasse/tokenizasse o markdown, já que o bbcode não deve ser inserido se a string estiver dentro de um bloco de código. Portanto, não é uma boa solução. Um espaço de largura zero também não é uma solução, pois levará a erros estranhos quando os usuários copiarem o trecho de código em seu próprio código-fonte.
Se estiver em um bloco de código, não é um problema. Se você puder garantir que esteja sempre em um bloco de código, estará em boa situação. Você precisa executar um analisador real para saber quando está em um bloco de código, no entanto.
Ah, ou desative a configuração Permitir que usuários mencionem outros usuários enquanto importa os dados.
Claro, se o @name estiver em um bloco de código, não é um problema. O problema é detectar quando está e quando não está, para que eu possa evitar o ping fora dos blocos de código, inserindo a tag invisível [b][/b] entre o @ e o name. Isso realmente exigiria um analisador/tokenizador markdown completo.
Hmm, isso ainda se aplica mesmo quando a postagem é posteriormente reaquecida ou isso levaria a pings aleatórios nesse caso?
Não vejo nada impedindo os pings, as alterações são publicadas diretamente nos clientes, tanto quanto entendo (mas estou longe de ser um especialista em ruby ou em discourse, então, por favor, me corrija se eu estiver errado):