BBCode 用 Markdownit Ruler をサポートする計画はありますか?

私のユースケースは、bbcodeの置換ルールを使用する際に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
}

ここのTODOコメントはかなり昔からあるようですが、実装の予定はありますか?

ここでの一番の疑問は、なぜそうするのか?ということだ。それはどのような問題を解決するのだろうか?

「いいね!」 1

代わりに私たちのプロジェクトに興味はありませんか?私たちは終盤に近づいています。

複雑なbbcodeにはmarkdownitを使用するのは苦痛であると判断したため、代わりにDiscourseにbbobを挿入しています。

markdownit rulerへの移行により、新しい解析を開始するときにルールを有効/無効にできるようになり、ネイティブのmarkdownitルールのような柔軟性と動作が可能になります。

たとえば、bbcodeルールをいくつかプッシュしたいが、デフォルトでは有効にしたくない場合に、必要に応じて有効にすることができます(OPの例のように)。現在、カスタムRulerではこれは不可能ですが、いくつかのトリック(解析環境を介して、またはルールをRulerで手動で変更する)で可能かもしれませんか?

[foo]
バーの内側でラップされていない場合はトークン化しないでください
[/foo]

[bar]
[foo]
バーの内側でラップされている場合はトークン化する必要があります
[/foo]
[/bar]

bbcode以外のネイティブmarkdownitルールを作成しない理由は、bbcodeのようなルールを実装するのは難しく、維持が困難であり、bbcodeはすでに存在するためです。


素晴らしい仕事ですが、私のユースケースは異なります。

そして、あなたのコードは他の懸念事項について私にインスピレーションを与えてくれます。

「いいね!」 1

すべてのbbcodeを現在の[wrap]のように扱い、divでラップすることを意味しますか?

あなたが説明していることは、コアが実装する必要があるものというよりは、カスタムのmarkdownitルール/プラグインのように聞こえると言えます。