lib/timetrap/helpers.rb in timetrap-1.5.3 vs lib/timetrap/helpers.rb in timetrap-1.6.0

- old
+ new

@@ -5,11 +5,11 @@ ee = if (sheet = sheet_name_from_string(unused_args)) == 'all' Timetrap::Entry.filter('sheet not like ? escape "!"', '!_%') elsif sheet =~ /.+/ Timetrap::Entry.filter('sheet = ?', sheet) else - Timetrap::Entry.filter('sheet = ?', Timetrap.current_sheet) + Timetrap::Entry.filter('sheet = ?', Timer.current_sheet) end ee = ee.filter('start >= ?', Date.parse(args['-s'])) if args['-s'] ee = ee.filter('start <= ?', Date.parse(args['-e']) + 1) if args['-e'] ee end @@ -47,13 +47,21 @@ secs = entries.inject(0){|m, e|e_end = e.end_or_now; m += e_end.to_i - e.start.to_i if e_end && e.start;m} "%2s:%02d:%02d" % [secs/3600, (secs%3600)/60, secs%60] end def sheet_name_from_string string - return "all" if string =~ /^\W*all\W*$/ - return "" unless string =~ /.+/ - DB[:entries].filter(:sheet.like("#{string}%")).first[:sheet] - rescue - "" + string = string.strip + case string + when /^\W*all\W*$/ then "all" + when /^$/ then Timer.current_sheet + else + entry = DB[:entries].filter(:sheet.like("#{string}")).first || + DB[:entries].filter(:sheet.like("#{string}%")).first + if entry + entry[:sheet] + else + raise "Can't find sheet matching #{string.inspect}" + end + end end end end