ぺんちゃん日記

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

はてなブログにGitHubページのソースコードを一部だけコピペ引用する【AutoHotkey】。

これまでの経緯。

昨日の作業で what to do から How to do まで準備することができました。
今回はそれを元に機能を追加してみようと思います。

実装してみた。

心配していたクリップボードによるテキスト選択の判別はすんなりと行きました。
ただし、ちゃんとテキスト部分がアクティブ(青く反転)していることが条件です。
f:id:yasushiito:20190628090128p:plain

選択されていても入力フォーカスが URL バーにあるなど、薄いグレーになっていると判定に失敗します。
f:id:yasushiito:20190628090155p:plain


スーパー pre 記法のタグは必ず行の先頭に記述するという条件になっているので、改行コードは適切に挿入しなければなりません。

            ;スーパー pre 記法による引用のタグを生成する。
            res := ">|" . lang . "|`n" . selectedtext . "`n||<`n"

myahk/blogrefemb.ahk at v01 · yasushiito/myahk

この改行コードを\nで挿入しようとしてちょっと悩んだのは内緒です。
AutoHotkey ではエスケープは`nのようにバッククォートで行います。

改行コードといえば、 テキスト選択の末尾が問題です。
ユーザが行の末尾で選択を止めた場合と改行コードを含めて次の行まで選択した場合で挿入すべき改行コードの数が違ってきます。
細かいことは気にせずにとにかく開業を差し込めばいいんだよという話にしても良いのですが、やっぱり意味のない空白行が挿入されると気持ち悪いので、 適切に処理したいところです。
そこで末尾が改行コードで終わるなら一度削除してしまって、改めて通過する形式にしました。

            ;選択範囲が改行で終わっている場合、改行がダブらないように一度削除してしまう。
            selectedtext := RegExReplace(selectedtext, "\n$" , "")

myahk/blogrefemb.ahk at v01 · yasushiito/myahk - Google Chrome

参照元にリンクするタイトルはウィンドウのタイトル名を利用します。
このままだとブラウザ名称の- Google Chromeまで入り込んでしまいますから削除しましょうか。

            WinGetActiveTitle, title
            ;ウィンドウタイトルに含まれるブラウザ名称を取り除く。
            title := RegExReplace(title,"- Google Chrome$", "")

myahk/blogrefemb.ahk at v01 · yasushiito/myahk


特筆すべき点はこれくらいでしょうか。
ソースコード全体はこんな感じになります。


使ってみた感想。

早速この記事で引用しています。
GitHubファイル全体の差し込みボタンと間違わないように意識しながら使っています。
同じGitHub関係なのだから、GitHubボタンで引用で来ても良さそうな気がしますが、将来的にはよそのブログとか Wiki の資料を引用したりしたいので、リンクまたは引用牡丹に育てたいと考えています。

この記事に登場するAutohotkey スクリプトについて

この記事の中で私が作成したプログラムは、全て自由に使うことができます。
詳しくはこちら