Sollte Checklist die GFM-Checkbox-Syntax unterstützen?

Mir ist aufgefallen, dass auf meiner Instanz einige bestehende Checklisten noch die älteste Syntax mit Sternchen anzeigen. Ich habe beschlossen, die oben genannte Rake-Aufgabe auszuführen, aber sie werden nicht aktualisiert.

Meines Wissens nach wurden die meisten anderen Checklisten stillschweigend auf die neue Syntax migriert, während ich in den letzten Wochen Discourse aktualisiert habe. Es scheint jedoch einige seltsame Fälle zu geben, die von der Rake-Aufgabe übersehen werden. Hat jemand eine Ahnung, warum das so sein könnte?

Gerne stelle ich weitere Informationen zur Verfügung, falls das beim Debuggen hilft.

Update: Es sieht so aus, als hätte einer dieser Beiträge die Syntax [\*] (die automatisch generiert wird, wenn das Kontrollkästchen über die Benutzeroberfläche angeklickt wird). Vielleicht ist das der Fall, der von der Rake-Aufgabe übersehen wurde?

4 „Gefällt mir“

@k4rtik, wenn ich mich recht erinnere, ändert die Rake-Aufgabe nur die Checkboxen am Anfang einer Zeile.

Alle Seiten, die ich sehe, haben am Anfang der Zeile Checkboxen. Die Frage ist, ob die Aufgabe sowohl [*] als auch [\*] ändert oder nur die erstgenannte Syntax?

Diese Zeile sollte prüfen, ob das Kontrollkästchen in den ersten drei Zeichen der Zeile steht. Ich habe die reguläre Ausdrucks gerade überprüft, und sie scheint korrekt zu funktionieren.

3 „Gefällt mir“

Starten Checklisten nicht immer zuerst mit einem Aufzählungszeichen (* oder -) [1, 2]? Das bedeutet, die Regex sollte passen:
- [\*]
was dazu führt, dass dies übersprungen wird, da es nicht mehr in den ersten drei Zeichen steht.

Später habe ich weitere Fälle gefunden, in denen ich verschachtelte Kontrollkästchen habe. Daher wird die Annahme, dass sie am Zeilenanfang stehen, auch viele gültige Anwendungsfälle überspringen.

PS: Mir ist aufgefallen, dass der OP hier keine GFM-Checklistensyntax verwendet (aber nur seit dem 4. August mit der Änderung des Wikis durch @sam), doch ich verwende diese seit ewigen Zeiten. Die CommonMark-Spezifikation, auf die Discourse für die Markdown-Dokumentation zu verweisen scheint, unterstützt Checklisten noch nicht. Erfindet Discourse seine eigene Variante der Checklistensyntax? Ich würde es vorziehen, bei der weit verbreiteten GFM-Syntax zu bleiben, anstatt sie weiter zu diversifizieren.

Könntest du bitte einen Link zur GFM-Checklisten-Syntax-Spezifikation bereitstellen?

Ich habe den Link oben bereits eingefügt, hier ist er noch einmal:

Das sieht hier für mich korrekt aus, wenn ich die beiden Beispiele aus dem obigen Link einfüge:

- [ ] foo
- [x] bar

ergibt

  • foo
  • bar

und

- [x] foo
  - [ ] bar
  - [x] baz
- [ ] bim

ergibt

  • foo
    • bar
    • baz
  • bim

Also sehe ich nicht wirklich, was das Problem ist? Könntest du genauer werden?

Entschuldigung, das wirkt verwirrend, da sich die Dinge vor nicht allzu langer Zeit geändert haben. Ich beziehe mich auf den Screenshot auf der Plugin-Seite, der die Aufzählungszeichen-Checklist-Syntax nicht anzeigt (und die Aufgabe rake migrate scheinbar nicht unterstützt):

Hier ist der Diff-Screenshot, der die Änderung vorgenommen hat:

Man sieht es schwer, aber auf der linken Seite gibt es Aufzählungszeichen mit Checkboxen, während die aktuelle rechte Seite die Aufzählungszeichen entfernt. Das deutet auf eine andere Standard-Checkbox-Syntax für neue Benutzer hin.


Später hinzugefügt:

Mit anderen Worten: All dies wird nun vom Checklist-Plugin unterstützt:

[] first
-[] second
- [] third

gerendert als:

first
- second

  • third

während die GFM-Tasklist-Spezifikation nur die dritte Variante zulässt (da eine Tasklist eine Liste ist):

Ein Aufgabenlisten-Eintrag ist ein Listeneintrag, bei dem der erste Block darin ein Absatz ist, der mit einem Aufgabenlisten-Marker und mindestens einem Leerzeichen vor jeglichem anderen Inhalt beginnt.

Ein Aufgabenlisten-Marker besteht aus einer optionalen Anzahl von Leerzeichen, einer öffnenden Klammer ([), entweder einem Leerzeichen oder dem Buchstaben x (klein oder großgeschrieben) und dann einer schließenden Klammer (]).

Wenn man sich an die GFM Tasklist-Erweiterungsspezifikation halten möchte, sollten die ersten beiden Varianten nicht erlaubt sein und auch nicht in der Plugin-Dokumentation beworben werden.

1 „Gefällt mir“

Die Unterstützung des GFM-Falls bedeutet nicht, dass andere Fälle nicht unterstützt werden. Würde man diese Logik konsequent durchziehen, müsste man viele negative Änderungen an der Art und Weise vornehmen, wie Discourse verschiedene Markdown-Formatierungen verarbeitet.

Es gibt zahlreiche Anwendungen, die Markdown-Checkboxen generieren. Es ist sehr praktisch, Listen einfach in Discourse-Beiträge einfügen zu können. Welchen Mehrwert hat es, die Kompatibilität zu brechen?

1 „Gefällt mir“

Eines der großen Probleme mit Markdown ist das Fehlen eines gemeinsamen Standards (CommonMark behebt dies), was zu einer Vielzahl inkompatibler Implementierungen führt. Wenn es bereits eine extrem beliebte Checklisten-Erweiterung in Form von GFM gibt, warum muss dann eine weitere erfunden werden? Ich war der Auffassung, dass sich die Discourse-Entwickler für CommonMark und die Standardisierung von Markdown einsetzen.

Mein Problem liegt nicht in der Unterstützung alternativer Syntax. Ich glaube an das Postel-Gesetz (auch wenn ich der Meinung bin, dass die oben genannte Problematik bei den letzten Syntaxänderungen, also von [*] zu [x], berücksichtigt worden wäre). Mein Problem ist vielmehr, dass im Plugin-Dokument eine mit GFM inkompatible Syntax beworben wird und keine einfache Migration der GFM-ähnlichen Aufgabelistensyntax in das neuere Format unterstützt wird. Dies hat viele meiner Seiten auf meiner Discourse-Instanz beschädigt, siehe meinen Eröffnungspost.

3 „Gefällt mir“

Wir haben die Syntax tatsächlich vereinfacht. Du kannst überall in einem Beitrag [] verwenden, um ein Kontrollkästchen zu erstellen. Ich gehe nicht davon aus, dass wir dies in absehbarer Zeit wieder ändern werden. Du bist jedoch herzlich eingeladen, einen Fork des Plugins zu erstellen, um deine gewünschten Funktionen umzusetzen.

2 „Gefällt mir“