Planos para dar suporte ao Markdownit Ruler para BBCode?

Meu caso de uso é desabilitar/habilitar regras de bbcode ao usar a regra de substituição de bbcode.

replace: function (state, tagInfo, content) {
  const source = state.push("my_token", "div", 0);
  try {
    md.block.bbcode.ruler.disable("ruleName")
    source.children = state.md.parse(content, {});
  } finally {
    md.block.bbcode.ruler.enable("ruleName")
  }
  return true
}

Notei que o comentário TODO aqui é de muito tempo atrás, há planos para implementá-lo?

Minha principal pergunta aqui é por quê? que problemas isso resolveria?

1 curtida

Nosso projeto lhe interessaria em vez disso? Estamos chegando perto do fim:

Determinamos que usar markdownit para qualquer bbcode complexo era uma dor, então estamos inserindo bbob no Discourse em vez disso.

Mover para o markdownit ruler permitirá habilitar/desabilitar regras ao iniciar uma nova análise, o que traz flexibilidade e comportamento semelhante às regras nativas do markdownit.

Por exemplo, quero adicionar algumas regras de bbcode, mas não habilitá-las por padrão, e depois habilitá-las quando precisar delas (como no exemplo do OP). Atualmente, isso não é possível com o Ruler personalizado, talvez possa ser feito com alguma artimanha (através do ambiente de análise ou modificando as regras do ruler manualmente)?

[foo]
não envolver dentro do bar não deve ser tokenizado
[/foo]

[bar]
[foo]
envolver dentro do bar deve ser tokenizado
[/foo]
[/bar]

A razão pela qual não estou criando regras nativas do markdownit além de usar o bbcode é que implementar regras como o bbcode será difícil e de difícil manutenção, e o bbcode já existe.


Ótimo trabalho, mas meu caso de uso é algo diferente.

E eu gosto do seu código aqui, que me inspira em outros problemas de preocupação.

1 curtida

Como tratar todo o bbcode como [wrap] é tratado agora? envolvê-los em divs?

Eu diria que o que você está descrevendo parece uma regra / plugin markdownit personalizado em vez de algo que o núcleo precise implementar?