Markdownの段落処理を改善

commonmarkの仕様によると:

段落
行末とは、改行(U+000A)、改行に続かない復帰(U+000D)、または復帰 とその後の改行 のいずれかを指します。

または Github Flavored Markdown の仕様 では:

段落
他の種類のブロックとして解釈できない空白行以外の行の連続が段落を形成します。段落の内容は、段落の生コンテンツをインラインとして解析した結果です。段落の生コンテンツは、行を連結し、先頭と末尾の空白を削除することで形成されます。

したがって、

Foo
bar

は以下のようにレンダリングされるはずです。

Foo bar

しかし、実際には以下のようにレンダリングされます。

Foo
bar

commonmark の例 または Github の例 をご覧ください。

これはバグでしょうか、それとも仕様からの意図的な逸脱でしょうか?

使用ケース

この段落の扱い方は、一部のユーザーがメールで返信する際に特に煩わしくなります。多くのメールクライアント(Thunderbird など)は、一定の文字数ごとに改行を作成します。しかし、設計の観点からは、メールユーザーはこの問題について考える必要はなく、メール設定を変更する必要もありません。

以下に例を示します:

他にこの現象が発生する状況として考えられるのは、新しいユーザーが Discourse を使い始めた際、手動でこのような段落を作成する場合です。

「いいね!」 3

これは意図的なものであり、GitHub と同じ動作に従います:

管理者は、サイト設定で「従来の Markdown の改行」設定を有効にすることで、動作を変更できます。

実装の背景にある理由の一部を説明しているこのトピックが参考になるかもしれません。

「いいね!」 5

ありがとうございます。詳しく調べてみます。

「いいね!」 4