Extensão Markdown: funções de quebra de linha inline não reconhecem mais tags BBCode com conteúdo vazio

Estou usando este código no meu 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]
        ])
      )
    }
  })
})

O código acima costumava funcionar tanto para tags BBCode vazias quanto não vazias. Mas descobri hoje que agora ele só é acionado quando a tag BBCode tem conteúdo (como [dpgb]Algum conteúdo[/dpgb]) e falha ao ser acionado quando a tag BBCode não tem conteúdo (como [dpgb][/dpgb]). É uma nova escolha de design?

2 curtidas

Não tenho certeza, você pode vasculhar o código-fonte para ver o commit que alterou o comportamento?

2 curtidas

A atualização para o Markdown.it v13 quebrou BBCodes inline vazios O comportamento da função processDelimiters mudou. Ela não atualiza mais o atributo end de nossos delimitadores de BBCode quando o BBCode não tem conteúdo.

Criei um PR que restaura o comportamento anterior e adiciona um teste.

2 curtidas