クリップボードの内容をJavaプログラム用に加工する
Unit Test なんかで複数行にわたるちょっと大きな文字列をソースコード中に埋め込みたい場合があるんだけど、Java にはヒアドキュメントとかないので、いちいちエスケープしたりするのが面倒。
ということで、Ruby でクリップボードの文字列を Java のコードに貼り付けられるように加工するプログラムを書いてみた。
require 'win32/clipboard' lines = [] Win32::Clipboard.get_data.each do |line| lines << line.sub("\r\n", "\n") end var_name = ARGV[0] || 's' escaped = "#{var_name} = " + lines.map {|line| line.inspect }.join(" + \n ") + ';' puts escaped Win32::Clipboard.set_data(escaped)
上のコードを対象に実行したら以下の様な感じに。
% ruby ec.rb str str = "require 'win32/clipboard'\n" + "\n" + "lines = []\n" + "Win32::Clipboard.get_data.each do |line|\n" + " lines << line.sub(\"\\r\\n\", \"\\n\")\n" + "end\n" + "\n" + "var_name = ARGV[0] || 's'\n" + "escaped = \"\#{var_name} = \" + lines.map {|line| line.inspect }.join(\" + \\n \") + ';'\n" + "puts escaped\n" + "Win32::Clipboard.set_data(escaped)\n";
Groovy でテストコードを書けばいいという話も有るけどな。