Markdown の記述リスト内コードフェンスを CommonMark 準拠にする#245
Merged
Conversation
これまで MDCompiler は、記述リストの説明(dd)の直後にカラム0で 書かれたコードフェンスも dd に取り込んで描画していた。これは RD の //emlist が dd に取り込まれる挙動を踏襲したものだが、CommonMark には 無い挙動で、GitHub などのプレビューではフェンスがリストの外に出る。 説明(dd)の一部として取り込むのは「項目の内容カラムにインデントされた フェンス」だけにし、カラム0のフェンスは dd の外(トップレベル)として 扱うよう改める。 - mdcompiler.rb: dd_with_p / dd_without_p からカラム0フェンスの取り込みを 削除(インデントフェンスのみ INDENTED_FENCE_RE で取り込む)。 - rrd_to_markdown.rb: RD→MD 変換で、dd や @param 等の説明の中にある //emlist・#@SampleCode を、項目の内容カラム(2スペース)にインデント したフェンスとして出力する(これまでカラム0で出力していたのが、 doctree のソースにカラム0フェンスが残っていた原因)。前処理ディレクティブ (#@SInCE 等)は Preprocessor の要件でカラム0のまま残す。 - markdown_to_rrd.rb: 逆変換で、インデントされた dd/@param 内フェンスを カラム0の //emlist{ / #@SampleCode に戻す(ラウンドトリップ維持)。 doctree 側で該当フェンスをすべてインデント済みのため、この変更後も 生成される HTML は変わらない(doctree の manual/ 全 1257 ファイル× サポート全バージョンで、変更前後の描画がバイト単位一致することを確認済み)。 全テスト(17619)green・steep 型エラーなし。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
これまで MDCompiler は、記述リストの説明(dd)の直後にカラム0で書かれたコードフェンスも dd に取り込んで描画していました。これは RD の
//emlistが dd に取り込まれる挙動(rdcompiler.rb のdd_with_p)を踏襲したものですが、CommonMark には無い挙動で、GitHub などのプレビューではフェンスがリストの外に出てしまいます。説明(dd)の一部として取り込むのは「項目の内容カラムにインデントされたフェンス」だけにし、カラム0のフェンスは dd の外(トップレベル)として扱うよう改めます。
dd_with_p/dd_without_pからカラム0フェンスの取り込みを削除(インデントフェンスのみINDENTED_FENCE_REで取り込む)。@param等の説明の中にある//emlist・#@samplecodeを、項目の内容カラム(2スペース)にインデントしたフェンスとして出力します。これまでカラム0で出力していたのが、doctree のソースにカラム0フェンスが残っていた原因でした。前処理ディレクティブ(#@since等)は Preprocessor がカラム0でしか認識しないため、そのまま残します。@param内フェンスをカラム0の//emlist{/#@samplecodeに戻します(ラウンドトリップ維持)。互換性・マージ順
doctree 側で該当フェンスをすべてインデント済み(doctree #3105)のため、この変更後も生成される HTML は変わりません。doctree の
manual/全 1257 ファイル × サポート全バージョン(3.0〜4.1)で、この bitclust の変更前後の描画がバイト単位一致することを確認済みです。マージ順は doctree #3105 が本番反映されてからにしてください。旧 doctree(カラム0フェンスが残った状態)にこの bitclust を当てると、フェンスがリストの外に描画されてしまいます。
全テスト(17619)green・
steep check型エラーなしです。🤖 Generated with Claude Code