% irb -Iruby -ridlemeter -ryaml -rpp -ractive_support
>> sleepdata = YAML.load_file File.expand_path('~/.mnt/alku/home/ion/media/text/sleep.yaml')
>> pp sleepdata
[{"sleep"=>Mon Sep 08 15:00:00 +0300 2008},
{"wake"=>Tue Sep 09 10:00:00 +0300 2008},
{"sleep"=>Tue Sep 09 14:00:00 +0300 2008},
{"wake"=>Tue Sep 09 21:00:00 +0300 2008},
{"sleep"=>Wed Sep 10 00:30:00 +0300 2008},
{"wake"=>Wed Sep 10 14:00:00 +0300 2008},
{"sleep"=>Thu Sep 11 00:30:00 +0300 2008},
{"wake"=>Thu Sep 11 14:30:00 +0300 2008},
{"sleep"=>Fri Sep 12 16:30:00 +0300 2008},
{"wake"=>Sat Sep 13 03:30:00 +0300 2008}]
>> last_sleep = sleepdata[-2]['sleep']
=> Fri Sep 12 16:30:00 0300 2008
>> IdleMeter::Analyze.intervals do |interval|
?> if interval.mode == :idle and interval.length >= 5.hours and
?> interval.from >= last_sleep + 1.day - 3.hours and
?> interval.from < last_sleep + 2.days - 6.hours
>> last_sleep = interval.from
>> puts "Sleep: #{interval}"
>> end
>> end
Sleep: idle 2008-09-14 00:07:15 +0300 – 2008-09-14 12:44:41 +0300 (12.6 hours)
Sleep: idle 2008-09-15 13:05:03 +0300 – 2008-09-15 23:37:18 +0300 (10.5 hours)