タスクサマリ

日常業務で何をやっていたのかは逐一メモしているわけですが、
それを集計するというのはよくやるわけです。
というわけでそんなプログラム。

#	09:00	12:00	Hoge	メール対応
#	12:00	13:00	社内	休憩
#	13:00	16:00	Fuga	訪問
#
# という形式のファイルを元に、以下のサマリリストを得る
#
# Hoge 3.0
# 社内 1.0
# Fuga 3.0
require 'time'

tasks = {}

TaskEntry = Struct.new(:start_time, :end_time, :group, :task)

while line = gets
	entry = TaskEntry.new(*line.split)
	if tasks[entry.group] == nil then tasks[entry.group] = [] end
	tasks[entry.group] << entry
end

summary = {}

tasks.each {|group,tasklist|
	tasklist.each {|t|
		if summary[group] == nil then summary[group] = 0 end
		summary[group] += Time.parse(t.end_time) - Time.parse(t.start_time)
	}
}

summary.each {|group,value|
	print group,"\t", value/3600, "\n"
}