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