はてなのCSV形式エクスポートデータをXML形式に変換するスクリプトを作ったけどうまくインポートできませんでしたの続きに取り組んでいたところ、Rubyでいろいろ困る羽目になってもうRuby面倒になってきた。
とりあえずきれいなXMLを出力してみようと思いREXML::Formatter::Prettyを使ってみるとエラーになってしまう。いろいろ調べたところ、どうやらXML中に「スペースをひとつも含まない」要素があるとエラーになるようだ。英語圏のライブラリだから分かち書き前提なのかなぁ。
どっかの掲示板に書いてあったように ruby/lib/ruby/1.8/rexml/formatters/pretty.rb の130行目あたりを↓の感じで書き換えてみたら動いてくれた。
# place = string.rindex(' ', width) # Position in string with last ' ' before cutoff place = string.rindex(' ', width) || width # Position in string with last ' ' before cutoff
しかし、これではマルチバイト文字の途中だろうがなんだろうがwidthバイト目でぶった切られてしまう。日本語が悲しい感じなるのでこれじゃだめ。暇なら自分でまともなパッチ書くけど、本筋からそれてしまうのでやめ。
で、REXMLをあきらめて代わりにHpricotを使おうと思ってソースをダウンロードし、ruby setup.rbしたらlibzipが無いと言われて怒られた。うげー。拾ってくればいいのかもしれないけど、Windows版GTK2とライブラリがバッティングしちゃう問題*1が起きそうなので避ける。
こうなったらCentOS 5.2 (final)の環境があるのでWindowsをやめてそちらでgemをインストールしようと思ったら、yum search gemしてもgemが見つからない。標準のリポジトリには含まれていないのか?
と、ここまで来て今日は時間切れ。何も進んでない。しかももう眠い。ふて寝する。
今日の感想 : Rubyマジ面倒。なんだかんだと言われようとも必要そうなライブラリを標準で同梱しているPHPがやっぱり楽。