Skip to content

メソッド署名に since/until バージョンバッジを表示する#272

Merged
znz merged 1 commit into
rurema:masterfrom
znz:method-since-display
Jul 21, 2026
Merged

メソッド署名に since/until バージョンバッジを表示する#272
znz merged 1 commit into
rurema:masterfrom
znz:method-since-display

Conversation

@znz

@znz znz commented Jul 21, 2026

Copy link
Copy Markdown
Member

概要

#132P3: バージョンバッジ表示です(P2 の算出サブコマンド PR がベース。P2 マージ後にレビュー・マージしてください)。

P1/P2 で DB に入る名前別 since/until を画面に描画します。データが空(現状の全 DB)なら出力は従来と完全同一で、methodsince を流した DB からバッジが現れます。

  • メソッド署名の <dt class="method-heading"> に、</code> 直後・permalink の手前でバッジを挿入
    • since: <span class="method-since-badge">Ruby 3.2 から</span> / until: <span class="method-until-badge">Ruby 4.0 で削除</span>(カタログキー since Ruby %s / removed in Ruby %s。C ロケールは英語キーのまま表示)
    • since/until は独立判定。別名グループの全名が同じ版なら「一様」として先頭の dt にだけ表示、名前ごとに版が違う/一部にしか無い場合は該当する名前の dt にだけ表示(決定事項「版差のある名前のシグネチャ行にだけ個別バッジ」)
    • floor(値なし)は非表示(決定事項どおり)
  • 共通ロジックは BitClust::VersionBadges(新規 mixin)に切り出し、RDCompilerTemplateScreen の両方に include
    • RDCompiler#method_signature への 1 行挿入で、メソッドページ(全4テンプレート系統)と offline/epub/lillia のクラスページのインライン本文をすべてカバー(MDCompiler は同メソッドを再利用しているので Markdown 原稿も両対応)
    • 唯一 compiler を経由しない default(動的サーバー配信用)template/class の署名欄のみ、別名ごとに <a><code>…</code></a>+自分のバッジの行に最小限再構成(バッジを名前単位で付けるため。空マップでも構造は変わるが表示テキストは同一。statichtml には影響なし)
  • CSS: default/lillia 両テーマにピル型バッジ(since=抑えた緑・until=EOL バナー系統の抑えた赤)
  • クラスページ冒頭の目次(ul.class-toc)へのコンパクト表示は今回は見送り(多段組の名前リストに文言バッジは密度的に厳しいため。必要なら表記を決めて追加します)

検証

  • テスト 8 件追加(17731 → 17739 tests / 0 failures): 一様バッジ(単名・別名)・版差別名で該当 dt にのみ付くこと(値を敢えて2番目の名前に置いて先頭 dt に出ないことを証明)・until・since+until 併記順・method_screen / class_screen(offline)/ class_screen(default テンプレート)の E2E。既存テストの期待値は無変更(=空データで出力不変の証明)
  • rbs validatesteep check エラーなし(mixin は自己型 : Translatable, HTMLUtils)
  • 実データ E2E: P2 の methodsince を適用済みの db-1.9.3 複製に対し template.offline で描画 → String#prepend のメソッドページに Ruby 1.9.3 から バッジ・floor の String#length(+別名 size)は完全無出力・String クラスページはインライン本文に 30 個のバッジを確認

refs #132

🤖 Generated with Claude Code

bitclust#132 P3。MethodEntry の名前別 since_map/until_map(P2)を
実際に画面へ描画する。<span class="method-since-badge">Ruby X から
</span> / <span class="method-until-badge">Ruby X で削除</span> を
<dt class="method-heading"> の </code> の直後・permalink の手前に出す。

- 共通ロジックは BitClust::VersionBadges(lib/bitclust/version_badges.rb)
  に切り出し、RDCompiler と TemplateScreen の両方に include する
  (MDCompiler は RDCompiler#method_signature を再利用しているので
  そのまま両対応になる)。
- since/until は独立に判定する: エイリアス全名が同じバージョンなら
  「一様」とみなし最初の <dt> にだけ出す。名前ごとに値が異なる/一部
  にしか無い場合は、該当する名前の <dt> にだけ出す。
- 唯一 compile_method を経由しない data/bitclust/template/class
  (動的サーバー配信用)は、署名行ごとに個別の <a><code>...</code></a>
  を組み立てて自分の名前のバッジを付けるよう最小限に再構成した
  (from TemplateScreen#method_row_signature_html)。
- カタログキー "since Ruby %s" / "removed in Ruby %s" を追加
  (ja_JP.UTF-8 のみ既存。C ロケールはキーがそのまま英語文になる)。
- 両テーマ(default/lillia)にピル型バッジの CSS を追加。

since/until が空(既存データは全て空)なら何も出ないため、RDCompiler の
既存の全出力は不変(既存テストはそのまま green)。default テンプレートの
署名欄のみ、別名ごとにバッジを付けられるよう構造を変えている。

RBS は VersionBadges に自己型 `: Translatable, HTMLUtils` を付けて
_()/escape_html の呼び出しを通した。rbs validate / steep check とも
エラー0。

refs rurema#132

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@znz
znz merged commit 6da28a8 into rurema:master Jul 21, 2026
10 checks passed
@znz
znz deleted the method-since-display branch July 21, 2026 11:33
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