blosxomのエントリを作成する秀丸マクロ

$entDir = "X:\\hogehoge\\blog\\put_entries_here";

#posX = x;
#posY = y;
$srBuf = searchbuffer;
#srOpt = searchoption;

disabledraw;
escape;

moveto 0, 0;

replaceallfast "&",  "&";
replaceallfast "\"", """;
replaceallfast "<",  "&lt;";
replaceallfast ">",  "&gt;";
replaceallfast "'",  "&#39;";

movetolineno 1, 2;
#slNo = lineno;
gofileend;
#elNo = lineno;
#clNo = #slNo;

while(#clNo < #elNo){
	movetolineno 1, #clNo;
	if(code == 0x09){
		delete;
		insert "<blockquote>\n<p>";
		golineend2;
		insert "</p>\n</blockquote>";
		#clNo = #clNo + 2;
		#elNo = #elNo + 2;
	}
	else if(code == 0x23){
		delete;
		insert "<div class=\"image\"><img src=\"";
		searchdown "\\t", regular;
		delete;
		insert "\" alt=\"";
		searchdown "\\t", regular;
		delete;
		insert "\" width=\"";
		searchdown "\\t", regular;
		delete;
		insert "\" height=\"";
		golineend2;
		insert "\" /></div>";
	}
	else{
		insert "<p class=\"text\">";
		golineend2;
		insert "</p>";
	}
	#clNo = #clNo + 1;
}

moveto #posX, #posY;
setsearch $srBuf, #srOpt;
enabledraw;

loaddll hidemarudir + "\\DengakuDLL.dll";

CategoryMenu:
	#r = dllfunc("ENUMDIR", $entDir + "\\*.*");
	#i = 0;
	while(1){
		$dir = dllfuncstr("FINDNEXT");
		if($dir == ""){
			break;
		}
		else if($dir == "." || $dir == ".."){
				continue;
		}
		$categories[#i] = $dir;
		#i = #i + 1;
	}
	$categories[#i] = "新しいカテゴリを作成...";

	mousemenuarray $categories, #i + 1;

	if(result == #i + 1){
		call InputCategoryName;
		$catName = $$return;
	}
	else if(result != 0){
		$catName = $categories[result - 1];
	}
	else{
		goto CategoryMenu;
	}

$msgBody = "エントリーの名前を指定してください。";
InputEntryName:
	$entName = input($msgBody, "");
	if($entName == ""){
		goto InputEntryName;
	}

// message $entDir + "\\" + $catName + "\\" + $entName + ".txt";
saveas $entDir + "\\" + $catName + "\\" + $entName + ".txt", utf8;

endmacro;

InputCategoryName:
	$$temp = input("カテゴリの名前を指定してください。", "");
	if($$temp == ""){
		goto InputCategoryName;
	}
	if(!dllfunc("MKDIR", "/p " + $entDir + "\\" + $$temp)){
		goto InputCategoryName;
	}
	return $$temp;

こんな感じです。いのうさん。マクロ起動すると、実体参照化→マークアップ(ちょっとした構文あり)→カテゴリ一覧のメニューを表示→エントリ名を決めるInputBox表示→UTF-8で保存、とやってくれます。確認したらバッチファイルでFTPしてます。

ちょっとした構文は、行頭に水平タブ入れておくと引用マークアップするのと、

#test.png<TAB>Test<TAB>100<TAB>100

を、

<div class="image">
<img src="test.png" alt="Test" width="100" height="100" />
</div>

とマークアップしてくれるものしか作ってない。まぁ、どうにでも拡張できると思うんですが。