require 'xmpp4r-simple'時のRuby1.9.1でのSytaxErrorを消す

$ irb
irb(main):001:0> require 'xmpp4r-simple'
SyntaxError: /usr/local/lib/ruby/gems/1.9.1/gems/xmpp4r-simple-0.8.8/lib/xmpp4r-
simple.rb:441: syntax error, unexpected ':', expecting keyword_then or ',' or ';
' or '\n'
                   when nil: new_presence.show || :online
(以下略)

と出たので検索するとri-emacs.rbがRuby1.9で動作しないので作者にメールしてみたというのと同じ症状の様子。さきほどのサイトによると、441行などが、Case文のwhen で'then' ではなく':'を使用しているのが原因であろうとのこと。どうもRuby1.8でifやcaseでthenの代わりに:が使えたのが、Ruby1.9ではサポートされてないとのことです。

$ sudo vi /usr/local/lib/ruby/gems/1.9.1/gems/xmpp4r-simple-0.8.8/lib/xmp
p4r-simple.rb
$ git diff
diff --git a/xmpp4r-simple.rb b/xmpp4r-simple.rb
index 9f82b21..b6df207 100644
--- a/xmpp4r-simple.rb
+++ b/xmpp4r-simple.rb
@@ -438,8 +438,8 @@ module Jabber
       roster.add_presence_callback do |roster_item, old_presence, new_presence|
         simple_jid = roster_item.jid.strip.to_s
         presence = case new_presence.type
-                   when nil: new_presence.show || :online
-                   when :unavailable: :unavailable
+                   when nil then new_presence.show || :online
+                   when :unavailable then :unavailable
                    else
                      nil
                    end

これでrequire 'xmpp4r-simple'でエラーが出なくなりましたが、このライブラリまだ使ってないので、ちゃんと動くか不明でありますというオチがつくのでありました・・・。