Markdown 확장: 인라인 랩 함수가 빈 콘텐츠가 있는 BBCode 태그를 더 이상 인식하지 못함

플러그인에서 이 코드를 사용하고 있습니다:

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]
        ])
      )
    }
  })
})

위 코드는 이전에는 빈 BBCode 태그와 내용이 있는 BBCode 태그 모두에서 작동했습니다. 하지만 오늘 확인해 보니, 현재는 BBCode 태그에 내용(예: [dpgb]Some content[/dpgb])이 있을 때만 작동하고, 내용이 없는 경우(예: [dpgb][/dpgb])에는 작동하지 않습니다. 새로운 설계 선택 사항인가요?

2개의 좋아요

확실하지 않네요. 동작이 변경된 커밋을 확인해볼 수 있을까요? 소스를 살펴봐 주세요.

2개의 좋아요

Markdown.it v13으로 업그레이드하면서 빈 인라인 BBCode가 깨졌습니다. processDelimiters 함수의 동작이 변경되었습니다. BBCode에 내용이 없는 경우 더 이상 해당 BBCode 구분자의 end 속성을 업데이트하지 않습니다.

이전 동작을 복원하고 테스트를 추가하는 PR을 생성했습니다.

2개의 좋아요