Rubyから伺かのSakura Scriptを触る

Ukagaka meets Ruby
キーポイントは,"\\"(二重バックスラッシュ)とShift_JISだった.


SSTPに関して,参考にしたのはこちら.
http://www.sbcr.jp/vwalker/feature/special_old/sp_20010625/index04.html


キャラクタのサーフェスを選択ってので使用する

\s[id]

ってのが怪しかったので,デバッグプリントしてみるとRubyではただのスペースになってた.そりゃそうだ.ダブルクオーテーションの中なんだもの.そこで,とりあえず\uも\hも\\u,\\hにしたら,ちゃんと動いた.


ただ,UTF-8だとMacじゃ文字化けするっぽいので,Shift_JIS.並のエディタだとSJISの\を打てないので,Emacsとか推奨.


最後に,今回のコードを晒しておきます.

require 'socket'

u = TCPSocket.open('localhost', 9801)

HEADERS ={
  'Sender' => 'sstp_test',
  'Charset' => 'Shift_JIS'
}
BREAK = "\r\n" # このへんはid:secondlifeさんの受け売り

script = "\\h\\s[5]SSTP成功!\\u\\s[11]UTF-8だと文字化けする〜\e"

headers = HEADERS.clone.update('Script' => script)

h = ['SEND SSTP/1.1'] # SSTPをべた書きしたいので1.1

h << headers.map{|k, v| "#{k}: #{v}"}

message = h.join(BREAK).concat(BREAK * 2)

u.write(message)