Stiamo importando un sacco di post e il contenuto contiene spesso testo come @global o simili (l’argomento della nostra istanza di discourse è correlato alla programmazione e @ è un simbolo in quella lingua).
C’è un modo pulito e ordinato per sopprimere il ping degli utenti? Non mi dispiace pre-elaborare i post prima dell’importazione.
Come sorta di sporco workaround, ho scoperto che inserire un tag bbcode vuoto dopo @ funziona (come @[b][/b]global). Non sembra una soluzione molto buona e richiederebbe di analizzare/tokenizzare il markdown, poiché il bbcode non dovrebbe essere inserito se la stringa si trova all’interno di un blocco di codice. Quindi non è una buona soluzione. Anche uno spazio a larghezza zero non è una soluzione poiché porterebbe a strani errori quando gli utenti copiano lo snippet di codice nel proprio codice sorgente.
Se è in un blocco di codice non è un problema. Se riesci ad assicurarti che sia sempre in un blocco di codice, sei a posto. Devi eseguire un vero parser per sapere quando sei in un blocco di codice, però.
Oh, oppure disattiva l’impostazione Consenti agli utenti di menzionare altri utenti durante l’importazione dei dati.
Certo, se il @name è in un blocco di codice allora non è un problema. Il problema è rilevare quando lo è e quando non lo è, in modo da poter impedire il ping al di fuori dei blocchi di codice inserendo il tag invisibile [b][/b] tra @ e name. Richiederebbe effettivamente un parser/tokenizer markdown completo.
Hmm, si applica ancora anche quando il post viene successivamente ri-forgiato o porterebbe a ping casuali in quell’evento?
Sono abbastanza sicuro che quando vengono rielaborati, viene utilizzato un interruttore per evitare bump e menzioni, ma non ho mai controllato il codice né l’ho provato.
Non vedo nulla che impedisca i ping, le modifiche vengono pubblicate direttamente sui client per quanto ne so (ma non sono affatto un esperto di ruby o di discourse, quindi per favore correggimi se sbaglio):