Skip to content

refactor: tidy up source accumulated through v0.9.0. - #13

Merged
halkn merged 8 commits into
mainfrom
refactor/source-cleanup
Oct 2, 2026
Merged

halkn merged 8 commits into
mainfrom
refactor/source-cleanup

Conversation

@halkn

@halkn halkn commented Oct 1, 2026

Copy link
Copy Markdown
Owner

変更理由

v0.9.0 までの機能追加で積み重なった重複を整理する。CLI の整理(互換性を壊す変更)は別の PR で出し、この PR は挙動をほぼ変えない。挙動が変わるのは下の 2 点だけ。

変更内容

  • ブロック木の走査を Block::children() / children_mut() に統一した。 前は collect_headings・gfm::promote_diagrams・diagram::resolve_blocks・azure_devops::post_process_blocks がそれぞれ container を列挙していて、どこまで降りるかが走査ごとに違っていた。
    • 修正: GFM では footnote 内の ```mermaid が diagram にならなかった。
    • 挙動の変化: headings()(t の見出し一覧と [[_TOC_]])が、footnote 内の見出しも拾うようになった。
  • option の enum を、それを使うモジュールへ移した。 Flavor は flavor/、MermaidMode は diagram/、ThemeChoice(旧 cli::Theme)は layout/theme.rs、ColorChoice は output/、InputSource は input.rs に置いた。cli::IconsSet は廃止して layout::icons::IconSet に ValueEnum を付けた。これでパイプラインが crate::cli に依存しなくなった(残っているのは config.rs だけ)。
  • 起動時と --watch の reload で document::build(parse → diagram 描画)を共有した。
  • pager の resize と reload で、読み位置を戻す処理を restore() 1 つにまとめた。
  • URL スキームの判定を RFC 3986 版(image::has_scheme)1 つにした。
    • 挙動の変化: tel: や vscode: のような :// を持たないスキームのリンク先は、文書のディレクトリと連結せず、書かれたとおりに表示する。
  • 細かい整理
    • "│ " を BORDER 定数にまとめた。
    • flavor の表示名を ValueEnum から作るようにした。
    • --line を usize で受けるようにした。
    • diagram の layout を layout/diagram.rs に切り出した。

影響範囲

  • src/markdown/model.rs、src/flavor/、src/diagram/、src/layout/、src/pager/app.rs、src/cli.rs、src/config.rs、src/main.rs、src/input.rs、src/output/mod.rs、src/document.rs(新規)
  • .claude/rules/rendering.md / runtime.md: 走査の規約と reload の経路の記述を更新した。
  • golden snapshot に差分なし。

確認手順

  • cargo test --all-features: 349 + 24 + 53 件が通った。pager::watch の 2 件は、sandbox の中では FSEvents が届かないため除外した(CI で確認する)。
  • cargo clippy --all-targets --all-features -- -D warnings / cargo fmt --check: 通った。
  • 追加した Red テスト: fenced_mermaid_in_a_gfm_footnote_becomes_a_diagram、a_target_with_any_scheme_is_shown_as_written
  • pager の resize / reload の経路は自動テストが無い。restore() の中身は以前の 2 経路と同じ手順であることを差分で確認した。実機では確認していない。

@halkn
halkn merged commit 6e2fbe0 into main Oct 2, 2026
4 checks passed
@halkn
halkn deleted the refactor/source-cleanup branch October 2, 2026 08:12
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