秀丸エディタでRubyを使う

in
秀丸エディタでRubyを使う

仕事でJanコードを含むテキストを扱う場合、商品名がわからなくて難儀することがよくあります。もちろん商品検索用のツールは別にあるのですが、毎回データベースにアクセスして検索するのは面倒くさい。便利。そこで、Rubyを使って秀丸エディタから商品名称を検索するマクロを作ることにした。

まず、Janコードを入力として商品名称を検索するRubyスクリプトを作成します。

require 'dbi'
require 'nkf'
  db = nil
  name = "not found"
  _jan = gets
  db = DBI.connect('dbi:MySQL:dbname:x.x.x.x',
       'user_1','passwd_1')
  row = db.select_one(
   "select name from jan_master_tbl where jan_cd 
            ='#{_jan}'")
  name = row[0] if row
  print "#{NKF.nkf('-Es',name)}"
  db.disconnect if db

実行してみます。

#>ruby getname.rb
#1234567890123
#テスト商品

このスクリプトに秀丸エディタ上で選択したJanコードを渡し、その結果を再び秀丸エディタに取り込めればOK。秀丸エディタのヘルプによれば

run文は[その他]-[プログラム実行]と同様に標準入出力のリダイレクトが可能です。runsync文とrunsync2文はリダイレクトはできません。<conで標準入力から、>conで標準出力から...

とあるので大丈夫そう。Rubyスクリプトを呼び出す秀丸マクロを作成します。

if (selecting == 0){
  message "範囲を選択してください";
  endmacro;
}
run "ruby 'c:\hidemaru\getname.rb' <con >con";

このマクロをショートカットに登録してずいぶん楽になりました。定番中の定番エディタですから公式ホームページには便利なマクロがたくさん登録されています。

Comments