Closed46
GitHub の PR ページを平和なねこの集会にする Chrome 拡張機能をつくる

ねこのお力をお借りして、GitHub の PR のレビューを平和なものにするための拡張機能をつくりたい。

追加であったらよさそうな機能
- 語尾を任意のものに変えられる
- 任意のユーザには適用しない
-
画面遷移しても同じユーザには同じアイコンを表示する
- リフレッシュするフローも用意する
- ページ種類ごとに有効化設定できる
- イヌ派対応

リリース版

参考にできそうな拡張機能を発見。
全てのWebサイトのな、ナ、ナ、Naをにゃ、ニャ、ニャ、Nyaに置換します

ひとまず DOM 操作しかしないので content scripts だけでよさそう

とりあえずミニマムにつくってみる

"run_at": "document_end"
で DOMContentLoaded
とかしなくても読み込めた。

DOM 操作で語尾を置き換えたいけど
DOM 構造がネストしていたりするときにでもテキストノードを取得するのがちょっと大変そう

TypeScript で書きたくなったのでこちらを参考に設定しました。

コメントの語尾が「にゃ」になる
- 文末がアルファベット (+ 文末文字) だったとき
nya
をつける-
OK
→OK nya
-
This is good.
→This is good nya.
-
What is the purpose?
→What is the purpose nya?
-
- 文末が日本語 (+ 文末文字) だったとき
にゃ
をつける-
なぜこういう書き方をしたのですか?
→なぜこういう書き方をしたのですかにゃ?
-
了解です
→了解ですにゃ
-
- コードブロックの中では適用しない

コメントしている人のアイコンがねこになる
- 同じ人は同じアイコン
- 違う人は違うアイコン

画像は The Cat API を使えばよさそう

GitHub のアイコンの img
要素の src
を差し替える。
ユーザーが誰かは alt
見れば取れそう。
<img class="avatar rounded-2 avatar-user" src="https://avatars.githubusercontent.com/u/..." width="40" height="40" alt="@<username>">

- アイコン要素全取得
- 人数分のねこの画像取得
- ユーザごとに画像の
src
を置き換え

できたにゃー
だいぶ平和になってきた

特定のユーザ名のアイコンは置き換えをスキップするオプションとかもつけたいにゃ

コメントにねこの画像がのる
- 各コメントの末尾にねこの GIF 画像がのる
- すでに画像が末尾にのっていればスキップする

語尾を任意のものに変えられる
- 英字・日本語両方について語尾を変更できる

任意のユーザには適用しない
- ユーザ名のリストを指定すると、リスト内のユーザはねこ化がスキップされる
- ユーザ名には正規表現を指定可能

アイコンが誰のかは簡単に取得できたけど
コメントが誰のかの情報は要素の近くになさそう
いったんアイコン変換スキップだけにするか~

画面遷移しても同じユーザには同じアイコンを表示する
- 画像をリフレッシュするボタンも用意する

ページ種類ごとに有効化設定できる
- 正規表現でマッチするページでは処理しない
- プロフィールページやアバター設定ページなど

設定項目が増えてきてポップアップに収まらなくなったので、アバター画像更新ボタンだけポップアップに残して options
ページに移行にゃ

開発中、PR 開いたときに突如巨大なねこの画像が出現してびっくりした 😇

イヌ派対応
- 出す画像をねこ / いぬ / 両方で設定できる

新しく追加された要素にも適用されるように 🎉
このスクラップは2023/12/05にクローズされました