Pläne zur Unterstützung von Markdownit Ruler für BBCode?

Mein Anwendungsfall ist das Deaktivieren/Aktivieren von BBCode-Regeln bei Verwendung der Ersetzungsregel von 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
}

Ich habe bemerkt, dass der TODO-Kommentar hier schon lange her ist. Gibt es Pläne, ihn zu implementieren?

Meine wichtigste Frage hier ist, warum? Welche Probleme würde das lösen?

1 „Gefällt mir“

Würde Sie unser Projekt stattdessen interessieren? Wir nähern uns dem Ende:

Wir haben festgestellt, dass die Verwendung von markdownit für komplexes BBCode ein Problem darstellt, daher fügen wir stattdessen bbob in Discourse ein.

Der Wechsel zu markdownit ruler ermöglicht es, Regeln beim Starten einer neuen Analyse zu aktivieren/deaktivieren. Dies sorgt für Flexibilität und ein Verhalten wie bei nativen markdownit-Regeln.

Zum Beispiel möchte ich einige bbcode-Regeln hinzufügen, aber sie nicht standardmäßig aktivieren, sondern sie dann aktivieren, wenn ich sie benötige (wie im Beispiel in der OP). Derzeit ist dies mit dem benutzerdefinierten Ruler nicht möglich. Vielleicht kann dies mit einigen Tricks (über die Parse-Umgebung oder durch manuelle Änderung der Regeln des Rulers) erreicht werden?

[foo]
nicht umwickelt innerhalb der Bar sollte nicht tokenisiert werden
[/foo]

[bar]
[foo]
umwickelt innerhalb der Bar sollte tokenisiert werden
[/foo]
[/bar]

Der Grund, warum ich keine nativen markdownit-Regeln außer der Verwendung von bbcode erstelle, ist, dass die Implementierung von Regeln wie bbcode schwierig und schwer zu warten wäre und bbcode bereits vorhanden ist.


Großartige Arbeit, aber mein Anwendungsfall ist etwas anderes.

Und ich mag Ihren Code hier, der mich zu anderen Problemen inspiriert.

1 „Gefällt mir“

Wie zum Beispiel, alle bbcode wie [wrap] zu behandeln, wie es jetzt behandelt wird? Sie in divs einpacken?

Ich würde sagen, dass das, was Sie beschreiben, eher eine benutzerdefinierte Markdown-it-Regel / ein Plugin ist, als etwas, das der Kern implementieren muss?