永井@知能.九工大です.

>>>>> "G" == GOTO Kentaro <gotoken / math.sci.hokudai.ac.jp> writes:
G> とりあえずこういうものを書きました。よろしければ
G> 野次下さい。

ruby-1.1b9_16 なら配列間の <=> が可能であるはずですから,
きちんとテストはしていませんが,こんな感じではいかがでしょう?

def sort(*args)
	args << 'Date' if args.size == 0 or not args.include?('Date')

	MailFolder @inbox.sort{|x,y|
		cmp_pair = [Array.new, Array.new]
		args.each{|arg|
			next unless arg =~ /^(\w+)(:\w+)?$/
			key = ($1 == 'Date')? 'time': $1
			opt = ($2 == ':r')? 1: 0
			next unless x[key] and y[key]
			cmp_pair[opt] << x[key]
			cmp_pair[(opt+1)%2] << y[key]
		}
		cmp_pair[0] <=> cmp_pair[1]
	}
end

-- 
                                         永井 秀利 (九工大 知能情報)
                                             nagai / ai.kyutech.ac.jp