Extension Markdown : les fonctions d'enveloppement en ligne ne reconnaissent plus les balises BBCode avec un contenu vide

J’utilise ce code dans mon plugin :

helper.allowList(['span.dpg-balloon-text'])

helper.registerPlugin(md => {
  md.inline.bbcode.ruler.push('dpgb', {
    tag: 'dpgb',
    wrap: function (startToken, endToken, tagInfo) {
      startToken.tag = endToken.tag = 'span'
      startToken.content = endToken.content = ''
      startToken.type = "span_open";
      endToken.type = "span_close";    
      startToken.nesting = 1;
      endToken.nesting = -1;    
      startToken.attrs = [['class', 'dpg-balloon-text']].concat(
        Object.keys(tagInfo.attrs).map(key => [
          `data-dpg-${key}`,
          tagInfo.attrs[key]
        ])
      )
    }
  })
})

Ce code fonctionnait auparavant aussi bien pour les balises BBCode vides que non vides. Mais j’ai découvert aujourd’hui qu’il ne se déclenche plus que lorsque la balise BBCode a du contenu (comme [dpgb]Du contenu[/dpgb]) et qu’il ne se déclenche pas lorsque la balise BBCode est vide (comme [dpgb][/dpgb]). Est-ce un nouveau choix de conception ?

2 « J'aime »

Je ne suis pas sûr, pouvez-vous examiner le code source pour voir le commit qui a modifié le comportement ?

2 « J'aime »

La mise à niveau vers Markdown.it v13 a cassé les BBCodes en ligne vides. Le comportement de la fonction processDelimiters a changé. Elle ne met plus à jour l’attribut end de nos délimiteurs BBCode lorsque le BBCode n’a pas de contenu.

J’ai créé une PR qui restaure le comportement précédent et ajoute un test.

2 « J'aime »