Eclipseで編集中のファイルにBOMを付ける。

という前提で(本当に正しいのか自信がないんだけど)、簡単にBOMを付ける方法を模索した。

最初はプラグインかなんかが出てるんじゃないかと思ったけど見つからなかった。

次にExternal Toolsでnkfを実行するのを試したが、-Oオプションで同じファイルに書き出せなかった。ファイルが空になってしまう。

rubyワンライナー(-pieオプション)だとWindowsで同一ファイルに書けなかった。

で、BOMを付ける簡単なスクリプト addbom.rb を書いた。

#! /usr/bin/env ruby

path = ARGV[0]
puts "Add ByteOrderMark to #{path}"
src = File.read(path)
bom = "\xEF\xBB\xBF"
if src.index(bom) == 0
  raise "BOM already exists."
end

File.open(path, "w") do |io|
  io << bom
  io << src
end

これをexternal toolsで実行するようにEclipseを設定。

Name: add BOM
Location: rubyのパス
Arguments: /path/to/addbom.rb ${resource_loc}
Refresh: selected resource

で選択中のリソースに簡単にBOMを付けられるようになった。うれしい。