秀丸マクロ: 2行のテキストからHTMLリンクを作成するプログラム

2行のテキストからHTMLリンクを作成

秀丸マクロで、範囲選択した2行のテキストからHTMLリンクを作成する プログラムを作りました。

他サイトへのリンクを張るHTMLコードを記述する場合に、 秀丸マクロで一発で変換したいと思って作ったのがきっかけです。

次のような1行目にリンク文言、2行目にURLを記述した 2行のテキストを選択してマクロを実行すると

リンク文言
https://sample.com/

↓↓↓↓↓ pタグで囲った HML リンクを作成します。

<p><a href="https://sample.com/" target="_blank">
リンク文言</a></p>

コード解説

概要

1行目の最後にある改行コードより前を「URL」、 改行コードより後を「リンク文言」として取り出します。 後はテンプレート文字列とつなぎ合わせるだけです。
リンク内容を変更したい場合は、 上の方にある「template」に書かれているリンク部分を修正します。

クリップボードへの貼り付け

最終行で、リンクをクリップボードへ貼り付けています。

// クリップボードへ設定
setclipboard $str_all;

もし選択テキスト部分を直接変換したければ、 insert文に変更してください。

// 直接変更
insert $str_all;

秀丸マクロ プログラム

コードは次の通りです。

// 選択した2行からhtmlリンクを作成
// 1行目: テキスト文言、 2行目: URL

// template -----------------------------
$t_left = "<p><a href=\"";
$t_mid = "\" target=\"_blank\">" + "\n";
$t_right = "</a></p>";
// ---------------------------------------

// 範囲選択中でない場合、マクロを終了する
if (selecting == 0) endmacro;

// 選択範囲の文字列を取得(範囲選択を維持する)
$str = gettext(seltopx,seltopy,selendx,selendy, 1);

// 改行の位置を取得
#num = strstr($str, "\r\n");

// 改行がなければ終了
if (#num == -1) {
	message "改行がみつかりません。";
	endmacro;
}
// 改行より左: リンク文言
$str_left = leftstr($str, #num);
// 改行より右: URL
$str_right = midstr($str, #num + 2);

// 文字列作成
$str_all = $t_left + $str_right + $t_mid + $str_left + $t_right;

// クリップボードへ設定
setclipboard $str_all;