k4rtik
(Kartik)
1
そこで、自分のインスタンスには古いアスタリスク構文が表示されている既存のチェックリストがいくつかあることに気づきました。上記の rake タスクを実行しましたが、更新されませんでした。
私の記憶が正しければ、過去数週間の Discourse のアップグレード中に、他のチェックリストのほとんどは自動的に新しい構文へ移行されました。しかし、rake タスクが置き去りにしている奇妙なケースがいくつかあるようです。その理由について何か手がかりはありませんか?
デバッグに役立つ場合は、さらに情報を提供できます。
更新: そのような投稿の1つには [\*] という構文(UI でチェックボックスを選択すると自動的に生成されるもの)が含まれていたようです。もしかすると、rake タスクがこのケースを見落としているのでしょうか?
「いいね!」 4
justin
(Justin DiRose)
2
@k4rtik 記憶が正しければ、rake タスクは行頭のチェックボックスのみを変更します。
k4rtik
(Kartik)
3
表示されているすべてのページには、行頭のチェックボックスがあります。問題は、タスクが [*] と [\*] の両方を変更するのか、それとも前者の構文のみを変更するのかということです。
justin
(Justin DiRose)
4
この行は、チェックボックスが行の最初の 3 文字に含まれている場合に実行されるべきです。正規表現を確認しましたが、正しく一致しているようです。
「いいね!」 3
k4rtik
(Kartik)
5
チェックリストは常に、まず箇条書きマーカー(* または -)で始まるはずです [1, 2]。したがって、正規表現は以下に一致する必要があります:
- [\*]
これにより、チェックボックスが最初の3文字にない場合にスキップされてしまいます。
その後、ネストされたチェックボックスのケースもいくつか見つけました。したがって、行の先頭にあると仮定すると、多くの有効なユースケースがスキップされてしまいます。
追伸:ここで元の投稿者がGFMチェックリスト構文を使用していないことに気づきました(ただし、@sam によるウィキの変更により8月4日以降は使用可能になりました)。私は昔からその構文を使用しています。Discourse がマークダウンドキュメントの参照として採用しているCommonMark仕様は、まだチェックボックスをサポートしていないようです。Discourse は独自のチェックリスト構文のバリエーションを考案しているのでしょうか?私は、さらに多様化させるよりも、広く普及しているGFM構文に準拠することを好みます。
GFM チェックリスト構文の仕様へのリンクを提供してください。
ここで見ると正しいように思えますが、上記のリンクから 2 つの例を貼り付けます:
- [ ] foo
- [x] bar
これは以下を生成します
そして
- [x] foo
- [ ] bar
- [x] baz
- [ ] bim
これは以下を生成します
問題がどこにあるのかよくわかりません。もう少し具体的に教えていただけますか?
k4rtik
(Kartik)
9
申し訳ありませんが、最近変更があったため混乱されているようです。私が言及しているのは、プラグインページに表示されているスクリーンショットで、箇条書きのチェックリスト構文が表示されていない(また、rake migrate タスクもサポートしていないように見える)ものです:
以下は、その変更を行った diff のスクリーンショットです:
見にくいですが、左側には箇条書きのチェックボックスがあり、現在の右側では箇条書きが削除されています。これは、新規ユーザー向けの異なるデフォルトのチェックボックス構文を示唆しています。
追記:
つまり、以下のすべてがチェックリストプラグインを使用してサポートされるようになりました:
[] first
-[] second
- [] third
レンダリング結果:
first
- second
一方、GFM の tasklist 仕様では、3 つ目のバリエーションのみが許可されています(tasklist は list の一種であるため):
タスクリスト項目 は、リスト項目 の一種であり、その最初のブロックが、タスクリスト項目マーカー と任意の他のコンテンツの前に少なくとも 1 つの空白文字で始まる段落で構成されます。
タスクリスト項目マーカー は、任意の数のスペース、左角括弧([)、小文字または大文字の空白文字または文字 x、そして右角括弧(])で構成されます。
GFM タスクリスト拡張仕様に準拠したい場合、最初の 2 つは許可されず、プラグインのドキュメントでも推奨されるべきではありません。
「いいね!」 1
Stephen
(Stephen)
10
GFM のケースをサポートすることは、他のケースをサポートしないことを意味しません。その論理を拡張すれば、Discourse があらゆる種類の Markdown 形式を処理する方法に対して、多くの否定的な変更が必要になってしまいます。
Markdown チェックボックスを生成するアプリは多数存在します。リストを Discourse の投稿に貼り付けられるのは非常に便利です。互換性を破ることにどのような価値があるのでしょうか?
「いいね!」 1
k4rtik
(Kartik)
11
Markdown の大きな問題の一つは、共通規格の欠如(CommonMark がこれを解消しようとしています)であり、その結果として互換性のない実装が多数存在することです。GFM の形で非常に人気のあるチェックリスト拡張機能がすでに存在するにもかかわらず、なぜ別のものを作り出す必要があるのでしょうか?Discourse 開発者が CommonMark と Markdown の標準化に注力しているという印象を持っていました。
私の問題は、代替構文のサポートそのものではありません。ポストルの法則を信じていますが(上記の問題は、最新の構文変更([*] から [x] へ)が行われる際に考慮されるべきだったと思いますが)、プラグインのドキュメントで GFM と互換性のない構文を推奨し、GFM 風のタスクリスト構文を新しい形式へ簡単に移行できないようにしている点にあります。これにより、私の Discourse インスタンス上の多くのページが壊れてしまいました。詳細は私の元投稿(OP)をご覧ください。
「いいね!」 3
justin
(Justin DiRose)
12
構文をよりシンプルにするために変更を行いました。投稿内のどこでも [] を使用してチェックボックスを作成できます。近い将来、この仕組みを再度変更する予定はありません。ただし、ご希望の機能を実装するためにプラグインのフォークを作成していただくことは大歓迎です。
「いいね!」 2