ぺんちゃん日記

食と歴史と IT と。 Web の旅人ぺんじろうが好奇心赴くままに彷徨います 。

【AutoHotkey】ブログの編集フォームにGitHubのソースコードを埋め込む時にGitHubのページを探索させる。

f:id:yasushiito:20190403184928p:plain

タブをいったりきたり。

以前の画期的な成果でワンクリックでGitHubのリポジトリ内のファイルをブログ記事に差し込めるようになりました。

そのおかげで、ファイル差し込み作業がだいぶ軽減されました。
しかし、この機能は事前に差し込みたいGitHubファイルのタブを選択してなければ正常に動作しません。
編集フォームの差し込み場所を確認してから実行しようとすると、あっちのタブこっちのタブと行ったり来たりしてしまいます。
なんだか不毛な動作をしているな。
タブの中からGitHubのファイルを探すことはできんのか?
せめてカレントタブが明らかにGitHub上のファイルでなければ可能な限り努力して探してほしい。
URL のドメイン名からある程度判断できるでしょ。

やりたくてもできなかった。

AutoHotkeyGoogle Chrome から取れる情報はウィンドウタイトルで精一杯です。
URL を取得することは可能ですが副作用なしでの取得は結構難しい。
URL を取得する際に入力フォーカスが URL バーに移ってしまうので、記事を編集している時に URL をゲットしようとすると、編集フォームに入力フォーカスを戻す作業が発生してしまいます。
それで面倒ながらも我慢していたのですが、先日入力フォーカスを汚染することなく URL を取得できるようになったので挑戦可能になりました。

実装してみる。

タブを探す処理。

大前提として必ずしも差し込みたいGitHubファイルを探せるわけではありません。
URL を判断する手がかりはドメイン名くらいしかありません。
リポジトリの中か外かすら判別できそうにありません。
Chrome 上で複数のGitHubページを開いている場合は最初に見つかったGitHubドメインのページを差し込みます。

まずはタブを探す処理の修正です。
タイトルだけでなく URL の判定の要素に加えます。

方針としては次のようなスタイルで行きます。

  • URL が正規表現で一致するものを対象とします。
  • 第3パラメータは URL で省略可能とします。
  • 第2パラメータのタイトルは省略できませんが、空文字列を渡せばタイトルは無視して URL だけでタブを探します。今のところ左一致で判断していますので、タイトルの途中の文字で判定することはできません。
  • 第2第3パラメータ両方与えれば両方一致した物を探します。
  • 戻り値はタブが見つかった場合 TRUE 見つからなかった場合 false が戻ります。

そして今回、タブ移動のタイミングを変更しました。
これまでカレントタブが操作対象では絶対ないと分かっている場合にタブの探索が呼び出されていました。
しかしこれからはカレントタブを確認してから他のタブを探します。
そうしないと、差し込みたいページをタブ選択しているのにブラウザを一周して探すことになります。

タグ差し込み処理。

ブログ差し込み処理はこんな感じです。
GitHubのタブを探しながらセレクトして差し込みタグを作成して、ブログ編集ページをタブ探索しながらセレクトして貼り付けます。
仕様通りに言いつけを守ってGitHubページを選択してから呼び出した場合、 URL 取得が2回走って URL バーが無駄にパカパカしますけど、そこは目をつぶってください。


まとめ。

完全ではありませんが機械が判断できる範囲で努力してくれるようになりました。
これ以上のことはきっと難しいので、きっとイライラしないでしょう。

次は Amazon アイテムの差し込みもこれに対応させたいと思います。

動かすには。

今回の記事に登場するプログラムは、それ一つでは動きません。
いくつものファイルが連携しあって動作します。
動作させるには、AutoHotkeyをインストールするだけでなくプログラム全体をダウンロードさせます。
プログラムは全て共有サイトGitHubで公開されています。

スクリプト全体をダウンロードしたい方はこちら。
github.com
どのボタンでダウンロードすれば良いか分からない方はこちら。
yasushiito.hatenablog.com