Module: Timetrap::Helpers
- Included in:
- CLI, Formatters::Text
- Defined in:
- lib/timetrap/helpers.rb
Instance Method Summary collapse
- #format_date(time) ⇒ Object
- #format_date_if_new(time, last_time) ⇒ Object
- #format_duration(stime, etime) ⇒ Object
- #format_seconds(secs) ⇒ Object
- #format_time(time) ⇒ Object
- #format_total(entries) ⇒ Object
- #load_formatter(formatter) ⇒ Object
- #same_day?(time, other_time) ⇒ Boolean
- #selected_entries ⇒ Object
- #sheet_name_from_string(string) ⇒ Object
Instance Method Details
#format_date(time) ⇒ Object
49 50 51 52 |
# File 'lib/timetrap/helpers.rb', line 49 def format_date time return '' unless time.respond_to?(:strftime) time.strftime('%a %b %d, %Y') end |
#format_date_if_new(time, last_time) ⇒ Object
54 55 56 57 |
# File 'lib/timetrap/helpers.rb', line 54 def format_date_if_new time, last_time return '' unless time.respond_to?(:strftime) same_day?(time, last_time) ? '' : format_date(time) end |
#format_duration(stime, etime) ⇒ Object
63 64 65 66 67 |
# File 'lib/timetrap/helpers.rb', line 63 def format_duration stime, etime return '' unless stime and etime secs = etime.to_i - stime.to_i format_seconds secs end |
#format_seconds(secs) ⇒ Object
69 70 71 |
# File 'lib/timetrap/helpers.rb', line 69 def format_seconds secs "%2s:%02d:%02d" % [secs/3600, (secs%3600)/60, secs%60] end |
#format_time(time) ⇒ Object
44 45 46 47 |
# File 'lib/timetrap/helpers.rb', line 44 def format_time time return '' unless time.respond_to?(:strftime) time.strftime('%H:%M:%S') end |
#format_total(entries) ⇒ Object
73 74 75 76 |
# File 'lib/timetrap/helpers.rb', line 73 def format_total entries 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 |
#load_formatter(formatter) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/timetrap/helpers.rb', line 4 def load_formatter(formatter) err_msg = "Can't load #{formatter.inspect} formatter." begin paths = ( Array(Config['formatter_search_paths']) + [ File.join( File.dirname(__FILE__), 'formatters') ] ) if paths.detect do |path| begin fp = File.join(path, formatter) require File.join(path, formatter) true rescue LoadError nil end end else raise LoadError, "Couldn't find #{formatter}.rb in #{paths.inspect}" end Timetrap::Formatters.const_get(formatter.camelize) rescue LoadError, NameError => e err = e.class.new("#{err_msg} (#{e.})") err.set_backtrace(e.backtrace) raise err end end |
#same_day?(time, other_time) ⇒ Boolean
59 60 61 |
# File 'lib/timetrap/helpers.rb', line 59 def same_day? time, other_time format_date(time) == format_date(other_time) end |
#selected_entries ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/timetrap/helpers.rb', line 31 def selected_entries 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 = ?', Timer.current_sheet) end ee = ee.filter('start >= ?', Date.parse(Timer.process_time(args['-s']).to_s)) if args['-s'] ee = ee.filter('start <= ?', Date.parse(Timer.process_time(args['-e']).to_s) + 1) if args['-e'] ee end |
#sheet_name_from_string(string) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/timetrap/helpers.rb', line 78 def sheet_name_from_string string 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 |