Skip to content

COPY ボタンまわりの pre の扱いを統一する#229

Merged
znz merged 1 commit into
rurema:masterfrom
znz:copy-button-consistency
Jul 11, 2026
Merged

COPY ボタンまわりの pre の扱いを統一する#229
znz merged 1 commit into
rurema:masterfrom
znz:copy-button-consistency

Conversation

@znz

@znz znz commented Jul 11, 2026

Copy link
Copy Markdown
Member

解決したい問題

#221 で素の <pre> にも COPY ボタンが付くようになったことを踏まえた
一貫性の改善4点です。

  1. 素の <pre> では COPY ボタンの上に隙間が見える
    (例: https://docs.ruby-lang.org/ja/3.2/class/ARGF=2eclass.html
    pre は上 padding 1.1em、pre.highlight は 0 のため)
  2. RUN の実行結果はコピーできない
  3. RUN で編集可能にしたサンプルに貼り付けると、caption と重なって先頭行が見えなくなる
  4. 貼り付けた文字がその場のハイライト色を引き継いで、色が中途半端に崩れる

変更内容

  • pre の上 padding を 0 に統一 — COPY ボタンが全 <pre> の先頭行に入る前提の
    見た目に一本化。pre.highlight の重複プロパティ(line-height / background /
    padding / font-weight)も整理
  • RUN の実行結果にも COPY ボタン — script.js に公開フック
    window.ruremaAddCopyButton(elem, getText) を切り出し、run.js が出力
    <pre> の生成時に呼びます。出力は実行のたびに変わるため、コピーする
    テキストはクリック時に取得します(出力本文は専用のテキストノードに
    持たせ、ボタンを消さずに書き換え)
  • caption をタブ化<span class="caption"> を pre 内の absolute 配置から
    pre の上に密着したタブ」に変更(rd/md 両コンパイラの出力順を
    caption→pre に)。pre 内配置のままだと編集時に貼り付けた先頭行と重なります。
    caption 用だった pre.highlight { position: relative } も不要になり削除
  • RUN で編集可能にする時点でハイライトを平坦化code.textContent = code.textContent で span を落とし、貼り付け時の色崩れを防ぎます
    (「とりあえず色を消す」方式。動的な再ハイライトは将来の課題)

互換性

  • script.js の COPY テキスト抽出は「pre 内の caption を除外する」処理を
    残しているため、キャッシュ等で新旧の HTML/JS が混在しても動作します
  • CHM/EPUB など theme を持たない出力では caption は従来どおり
    プレーンテキストとして pre の前に表示されます

テスト

  • test/js/test_script.mjs に公開フックのテストを追加(動的コンテンツは
    クリック時の内容がコピーされること)
  • rd コンパイラの caption 期待値を新しい出力順に更新(md は rd との
    等価性テストで担保)
  • bundle exec rake test:js / ruby test/run_test.rb(17589 tests)全パス

🤖 Generated with Claude Code

rurema#221 で素の pre にも COPY ボタンが付くようになったのを踏まえた一貫性の
改善をまとめて行う。

- pre の上 padding を highlight の有無によらず 0 に統一。素の pre で
  COPY ボタンの上に padding 分(1.1em)の隙間が見えていたのを解消し、
  pre.highlight の重複プロパティも整理する
- RUN の実行結果(highlight__run-output)にも COPY ボタンを付ける。
  script.js に公開フック window.ruremaAddCopyButton を切り出し、
  run.js が出力 pre の生成時に呼ぶ。出力は実行のたびに変わるので
  コピーするテキストはクリック時に取得する
- caption を pre 内の absolute 配置から「pre の上に密着したタブ」に変更
  (rd/md 両コンパイラの出力順を caption→pre に)。pre 内配置のままだと
  RUN で編集可能にしたときに貼り付けた先頭行と caption が重なる
- RUN で編集可能にする時点でハイライトの span をプレーンテキスト化する。
  編集・貼り付けで span に文字が食い込み、その場の色を引き継いで
  中途半端に色が崩れるため

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@znz znz merged commit f06cf50 into rurema:master Jul 11, 2026
9 checks passed
@znz znz deleted the copy-button-consistency branch July 11, 2026 08:52
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