ごとけんです

便乗して質問します。

In message "[ruby-list:7738] Re: mail index sort by From:"
    on 98/04/27, Kikutani Makoto <kikutani / debian.or.jp> writes:

>きくたにです。

>日付けのあたりがダサいですねえ。もっとうまい方法はないですか?
>最近気付いたのですが、Date:フィールドの年が 「98」 としかないのが
>けっこうあるので、上のように補正が必要です。

Date フィールドって MUA が着けてるのか色々あるんですね。
Date によるソートは Time オブジェクトに変換してやろうかと
思ったんですが、タイムゾーン情報の扱いで困ってます。
"JST" => "+0900" みたいな一覧表ってどこかに無いのでしょうか? 

それと、ソートと言っても、まず From でソートして、
同じ人からのはサブジェクト順に、
さらにサブジェクトも同じなら時間順に並べる、
みたいなこともしたいので、
例えばその場合は Mail#time が ['Date'] を Time に変換したものを
返すメソッドだとして

folder.sort{|i,j|
  9 * ( 1 + (i['From']<=>j['From']) ) +
  3 * ( 1 + (i['Subject']<=>j['Subject']) ) +
      ( 1 + (i.time<=>j.time) )
}

といった比較法を考えているのですが、これよりスマートな
比較法ってやっぱり無いでしょうか? 
Array#sort って安定なソートではないですよね? 
安定だとしてもこっちの方が早いとは思うのだけど。

-- gotoken