Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

秀丸マクロ+RubyでRubyのコメントアウトマクロを作成

概要

秀丸マクロとRubyを使用してRubyコメントアウトマクロを作成します。

作成対象は2つ。
・選択範囲を#でコメントアウト
・既に#でコメントアウトしている箇所はコメントを無効化
※あくまで行頭が#の場合のみ対応。タブやスペースは考慮しない。

   #コメント
例えば上記のような行は

   コメント
こうならずに

#   #コメント
こうなるのが仕様。

秀丸マクロコード

// Rubyのパスを通しておくこと
$RUBY_HOME = "ruby";
// 日本語Shift-JIS指定
$RUBY_SHIFTJIS = "-Ks";
// 実行するrubyのファイル名を指定
$RUBY_SCRIPT = "C:\\Program Files\\Hidemaru\\mac\\Ruby\\CommentRuby.rb";

runex $RUBY_HOME + " " + $RUBY_SHIFTJIS +" '" + $RUBY_SCRIPT + "'"
    , 1             //sync    0:async 1:sync
    , 5, ""         //stdin   0:none 1:auto 2:file 3:(reserve) 4:all 5:select
    , 6, ""         //stdout  0:none 1:auto 2:file 3:add file  4:new 5:insert 6:replace
    , 6, ""         //stderr  0:none 1:=out 2:file 3:add file  4:new 5:insert 6:replace
    , 0, ""         //folder  0:none 1:current 2:specify 3:(reserve) 4:exe's folder
    , 1             //show    0:auto 1:show 2:hide
    , 1             //nodraw  0:draw 1:no draw
    , 0             //unicode 0:ansi 2:unicode
    ;

endmacro;

Rubyコード

while line = STDIN.gets
	if (/exit/ =~ line)
		break;
	end
	if (line.slice(0,1) == '#')
		line.slice!(0)
	else
		line = '#' + line
	end
	if line
		printf line
	end
end

マクロ実行前のRubyサンプルコード

puts('test1')
puts('test2')
puts('test3')
puts('test4')
#puts('test5')
#puts('test6')
#puts('test7')
#puts('test8')

マクロ実行後のRubyサンプルコード

#puts('test1')
#puts('test2')
#puts('test3')
#puts('test4')
puts('test5')
puts('test6')
puts('test7')
puts('test8')

補足

    • slice!(n) = n文字目を削除