Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
yasulab opened this issue Nov 28, 2023 · 0 comments

Comments

@yasulab
Copy link
Member

yasulab commented Nov 28, 2023

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サイトに実装例があるので、プラグインでテストを書くときは次のように検知・エラー通知をすると良さそう 👀💡✨

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

No branches or pull requests

2 participants
@yasulab and others