hawm
(Hawm)
1
私のユースケースは、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コメントはかなり昔からあるようですが、実装の予定はありますか?
sam
(Sam Saffron)
2
ここでの一番の疑問は、なぜそうするのか?ということだ。それはどのような問題を解決するのだろうか?
「いいね!」 1
代わりに私たちのプロジェクトに興味はありませんか?私たちは終盤に近づいています。
複雑なbbcodeにはmarkdownitを使用するのは苦痛であると判断したため、代わりにDiscourseにbbobを挿入しています。
hawm
(Hawm)
4
markdownit rulerへの移行により、新しい解析を開始するときにルールを有効/無効にできるようになり、ネイティブのmarkdownitルールのような柔軟性と動作が可能になります。
たとえば、bbcodeルールをいくつかプッシュしたいが、デフォルトでは有効にしたくない場合に、必要に応じて有効にすることができます(OPの例のように)。現在、カスタムRulerではこれは不可能ですが、いくつかのトリック(解析環境を介して、またはルールをRulerで手動で変更する)で可能かもしれませんか?
[foo]
バーの内側でラップされていない場合はトークン化しないでください
[/foo]
[bar]
[foo]
バーの内側でラップされている場合はトークン化する必要があります
[/foo]
[/bar]
bbcode以外のネイティブmarkdownitルールを作成しない理由は、bbcodeのようなルールを実装するのは難しく、維持が困難であり、bbcodeはすでに存在するためです。
素晴らしい仕事ですが、私のユースケースは異なります。
そして、あなたのコードは他の懸念事項について私にインスピレーションを与えてくれます。
「いいね!」 1
sam
(Sam Saffron)
5
すべてのbbcodeを現在の[wrap]のように扱い、divでラップすることを意味しますか?
あなたが説明していることは、コアが実装する必要があるものというよりは、カスタムのmarkdownitルール/プラグインのように聞こえると言えます。