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

**URL:** https://meta.discourse.org/t/plans-to-support-markdownit-ruler-for-bbcode/283517
**Category:** Development
**Created:** [2023 年 10 月 26 日午前 10:37 UTC](https://meta.discourse.org/t/plans-to-support-markdownit-ruler-for-bbcode/283517 "2023-10-26T10:37:56Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![hawm](https://avatars.discourse-cdn.com/v4/letter/h/f07891/32.png) [@hawm](https://meta.discourse.org/u/hawm)
#### Post date: [2023 年 10 月 26 日午前 10:37 UTC](https://meta.discourse.org/t/plans-to-support-markdownit-ruler-for-bbcode/283517/1 "2023-10-26T10:37:57Z")

</div>

私のユースケースは、bbcodeの置換ルールを使用する際にbbcodeルールを無効化/有効化することです。

```javascript
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コメントはかなり昔からあるようですが、実装の予定はありますか？

> <https://github.com/discourse/discourse/blob/d40530545607f307b613167a0659e05dd0bda3dc/app/assets/javascripts/pretty-text/addon/engines/discourse-markdown-it.js#L77-L110>

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2023 年 10 月 27 日午前 3:25 UTC](https://meta.discourse.org/t/plans-to-support-markdownit-ruler-for-bbcode/283517/2 "2023-10-27T03:25:04Z")

</div>

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

---

<div class="post-metadata">

### Author: ![TheDarkWizard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thedarkwizard/32/177913_2.png) [@TheDarkWizard](https://meta.discourse.org/u/TheDarkWizard)
#### Post date: [2023 年 10 月 27 日午前 4:13 UTC](https://meta.discourse.org/t/plans-to-support-markdownit-ruler-for-bbcode/283517/3 "2023-10-27T04:13:29Z")

</div>

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

> **[GitHub - RpNation/bbcode: RpNation's Official BBCode Implementation for...](https://github.com/RpNation/bbcode)**
>
> RpNation's Official BBCode Implementation for Discourse

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

---

<div class="post-metadata">

### Author: ![hawm](https://avatars.discourse-cdn.com/v4/letter/h/f07891/32.png) [@hawm](https://meta.discourse.org/u/hawm)
#### Post date: [2023 年 10 月 27 日午前 5:49 UTC](https://meta.discourse.org/t/plans-to-support-markdownit-ruler-for-bbcode/283517/4 "2023-10-27T05:49:49Z")

</div>

> [@sam](#):
>
> この問題は何を解決しますか？

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

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

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

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

```

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

* * *

> [@TheDarkWizard](#):
>
> 代わりに私たちのプロジェクトに興味がありますか？

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

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

> <https://github.com/RpNation/bbcode/blob/38fd959aeaf022b6a85fc0f6567f3e946cebaa76/assets/javascripts/lib/discourse-markdown/bbcode-plugin.js#L36-L54>

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2023 年 10 月 31 日午後 11:50 UTC](https://meta.discourse.org/t/plans-to-support-markdownit-ruler-for-bbcode/283517/5 "2023-10-31T23:50:27Z")

</div>

> [@hawm](#):
>
> 例えば、bbcodeルールをいくつかプッシュしたいのですが、デフォルトでは有効にせず、必要になったときに有効にしたいのです（OPの例のように）。現在、カスタムRulerではこれは不可能ですが、何かトリッキーな方法（parse env経由やrulerのルールを手動で変更するなど）で可能でしょうか？
> 
> ``

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

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