Estensione Markdown: le funzioni di wrap inline non riconoscono più i tag BBCode con contenuto vuoto

Sto usando questo codice nel mio 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]
        ])
      )
    }
  })
})

Quanto sopra funzionava sia con i tag BBCode vuoti che non vuoti. Ma ho scoperto oggi che ora si attiva solo quando il tag BBCode ha contenuto (come [dpgb]Alcuni contenuti[/dpgb]) e non si attiva quando il tag BBCode non ha contenuto (come [dpgb][/dpgb]). È una nuova scelta di progettazione?

2 Mi Piace

Non sono sicuro, puoi analizzare il codice sorgente per vedere il commit che ha modificato il comportamento?

2 Mi Piace

L’aggiornamento a Markdown.it v13 ha interrotto gli inline BBCode vuoti Il comportamento della funzione processDelimiters è cambiato. Non aggiorna più l’attributo end dei nostri delimitatori BBCode quando il BBCode non ha contenuto.

Ho creato una PR che ripristina il comportamento precedente e aggiunge un test.

2 Mi Piace