hakeの日記

Windows環境でプログラミングの勉強をしています。

サクラエディタの外部マクロとしてrubyを使う その2

前回と同じことをするマクロのJScript部分をVBScriptに書き直ししてみました。
んー、細かい文法がJScriptを異なっているのでちょっと面倒かも。

Dim line

Const rubybin = "d:\\ruby193\\bin\\ruby.exe" 'Dimだとエラーになった
Const rubyscr = "d:\\zzz\\ruby\\script.rb"

Dim command
Dim linecnt
Dim linenum


'                ↓引数が複数個の場合、括弧が使えない?
Editor.GoFileTop 0,0,0           ' カーソルをファイル先頭へ移動
linecnt = Editor.GetLineCount(0) ' 全行数取得
linenum = 1                      ' 現在のカーソル行番号


While linenum <= linecnt
  line = Editor.GetLineStr(0)      ' lineにカーソル行を代入

  ' 文字列がオブジェクトで無い?ので直接replaceメソッドが使用できない
  '   RegExpオブジェクトを使用する
  Set objReExp = New RegExp
  objReExp.pattern = "\r\n"
  line = objReExp.replace(line, "") ' 改行コード削除

    ' ダブルクォートの\によるエスケープができない
    ' 文字列の連結は & を使用する
  command = "SET /P X=" & line & "\<NUL |" & rubybin & " " & rubyscr

  Editor.ExecCommand command, 3  'command実行
  Editor.GoLineTop(8)            'カーソルを行頭へ移動
  Editor.Down()                  'カーソルを1行下へ移動
  linenum = linenum + 1
Wend