Skip to content

Markdown リンクとリスト内のインデントフェンスを描画対応#241

Merged
znz merged 1 commit into
rurema:masterfrom
znz:md-inline-links-and-indented-fences
Jul 14, 2026
Merged

Markdown リンクとリスト内のインデントフェンスを描画対応#241
znz merged 1 commit into
rurema:masterfrom
znz:md-inline-links-and-indented-fences

Conversation

@znz

@znz znz commented Jul 14, 2026

Copy link
Copy Markdown
Member

rurema/doctree#3086(news/1_9_0.md の Markdown 記法修正)で使われた記法が
MDCompiler(GFM モード)で未対応だったため、描画できるようにします。

対応した記法

  1. インラインリンク [テキスト](URL) / [テキスト](#アンカー)(MARKUP_SPEC §7.4/§7.5)
    • 宛先を https?://#フラグメント に限定し、[c:String](を参照) のような
      参照直後の括弧書きをリンクと誤認しない
    • 表示テキストの角括弧ネスト対応([[ruby-cvs:16833]](URL))・\[ エスケープ対応
    • 外部 URL は rd の [[url:]] と同じ class="external"
  2. 自動リンク <https://...>
  3. リスト項目・定義リスト説明内のインデントされたコードフェンス
    • GFM と同じくフェンス行のインデント幅を内容と閉じフェンスから除去
    • ハイライト・title= ラベルは通常のフェンスと同じ処理
    • MARKUP_SPEC に §9.5 として追記(旧 9.5 インラインコードは 9.6 へ)

あわせて修正

  • リストと空行で切り離された残余のインデント行で read_paragraph が空になり、
    ディスパッチが無限ループする潜在バグを修正(段落として消費)。
    manual/ 全 1250 ファイルの新旧出力比較で、従来この無限ループで
    タイムアウトしていた16ファイルが完走するようになる以外は完全一致(回帰なし)

検証

  • test/test_mdcompiler.rb に21テスト追加(リンク9・フェンス8・ハング2・既存パターン2)
  • 全テスト 17615 件 green、rake sig / steep check エラーなし
  • PR #3086 の 1_9_0.md 全文を Preprocessor→MDCompiler(GFM) でコンパイルし、
    リンク・フェンスの描画と取りこぼしゼロを確認

🤖 Generated with Claude Code

doctree の手書き Markdown(rurema/doctree#3086 の news/1_9_0.md)で
使われた3つの記法を MDCompiler(GFM モード)で描画できるようにする:

- [テキスト](URL) / [テキスト](#アンカー) のインラインリンク
  (MARKUP_SPEC §7.4/§7.5。宛先を URL と #フラグメントに限定し、
  参照直後の括弧書きテキストをリンクと誤認しない。表示テキストの
  角括弧はネスト・\ エスケープ対応)
- <https://...> の自動リンク
- リスト項目・定義リスト説明内のインデントされたコードフェンス
  (GFM と同じくフェンス行のインデント幅を内容から除去。
  ハイライト・title= ラベルも通常のフェンスと同様に処理)

あわせて、リストと空行で切り離された残余のインデント行で
read_paragraph が空になりディスパッチが無限ループする潜在バグを修正
(段落として消費する)。manual/ 全ファイルの新旧出力比較で、この修正で
タイムアウトしていた16ファイルが完走するようになる以外は完全一致。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@znz znz merged commit 83ab432 into rurema:master Jul 14, 2026
10 checks passed
@znz znz deleted the md-inline-links-and-indented-fences branch July 14, 2026 11:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant