Skip to content

Markdown ファイル内の置換リンク ([...][]) を抽出し、適用数が0となる置換リンクをテストで検知したい #1547

@yasulab

Description

@yasulab

Originally discussed by @r-kojima & @hachi8833 in #1546 (comment)

Issue/PR での対応ありがとうございました! 一旦 Issue としてメモしておきますね 📝

🤔 背景

  1. Railsガイド内の Markdown ファイルでは置換リンク ([...][]) が存在する
  2. 置換リンクでは、事前に定義した用語と完全一致するテキストを、リンク付きテキストに置き換える
  3. 置換リンクで定義した用語と翻訳した用語が完全一致しないことがあり、その場合、置換が行われずに通常のテキストがそのまま表示される
  4. 現在の CI では内部リンクのリンク切れを HTML Proofer で自動検知できるが、上記のような置換リンクが適用されるかどうかはテストできていない(置換に失敗したかどうかを別途検知する必要がある)
  5. このため、Markdown ファイル内の置換リンク ([...][]) を抽出し、 適用数が0となる置換リンク をテストで検知したい
    • ただし 想定している置換リンクの適用数が1つなのか、2つ以上なのかを検知することはできない。 このため、上記のテストも完全に網羅できるわけではなく、人手でチェックする必要がありそう 🤔💭

🛠 具体例

ありがとうございます。不正なリンク抽出用のシェルスクリプトを一応書いていたので、ご参考までに 🙇
※コードブロック内にある正常なパターンもヒットしちゃったので、結局目視で確認しております 😢 そのままじゃCI等では使え無さそう。。

#!/bin/bash

# _siteディレクトリのパス
site_directory="_site"

# _siteディレクトリ内のHTMLファイルに対して処理
find "$site_directory" -type f -name "*.html" | while read -r file; do
    # grepで][]が含まれている行を抽出
    grep_result=$(grep '\]\[' "$file")

    # grepの結果があるかチェック
    if [ -n "$grep_result" ]; then
        # ファイル名を表示
        echo "File: $file"
        
        # []][]が含まれている行を表示
        echo "$grep_result"
        
        # ファイルごとに区切りを表示
        echo "----------------------------------------"
    fi
done

echo "処理が完了しました。"

上記以外のシナリオ例 (この Issue が解決されたら未然に防げてたであろう関連 Issue):

💡 解決案

HTML-Proofer のプラグインとしてテストを追加する (Custom Check を書く) のが良さそう!

未踏ジュニアのWebサイトに実装例があるので、プラグインでテストを書くときは次のように検知・エラー通知をすると良さそう 👀💡✨

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions