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 · 1 comment

Comments

@yasulab
Copy link
Member

yasulab commented Nov 28, 2023

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 "処理が完了しました。"

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

@yasulab
Copy link
Member Author

yasulab commented Jan 11, 2024

📝 MEMO: 未踏ジュニアで HTML Proofer のプラグインとしてイイ感じにテストを追加する方法が分かったので、テストを追加するときは次のような方法でテストを追加するとエラーレポートが分かりやすくなりそう 👀💡✨

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

1 participant