Module: Timetrap::Helpers
- Included in:
- CLI, Formatters::Text
- Defined in:
- lib/timetrap/helpers.rb
Defined Under Namespace
Modules: AutoLoad
Instance Method Summary collapse
- #format_date(time) ⇒ Object
- #format_date_if_new(time, last_time) ⇒ Object
- #format_seconds(secs) ⇒ Object (also: #format_duration)
- #format_time(time) ⇒ Object
- #format_total(entries) ⇒ Object
- #same_day?(time, other_time) ⇒ Boolean
- #selected_entries ⇒ Object
- #sheet_name_from_string(string) ⇒ Object
Instance Method Details
#format_date(time) ⇒ Object
66 67 68 69 |
# File 'lib/timetrap/helpers.rb', line 66 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
71 72 73 74 |
# File 'lib/timetrap/helpers.rb', line 71 def format_date_if_new time, last_time return '' unless time.respond_to?(:strftime) same_day?(time, last_time) ? '' : format_date(time) end |
#format_seconds(secs) ⇒ Object Also known as: format_duration
80 81 82 83 84 85 86 |
# File 'lib/timetrap/helpers.rb', line 80 def format_seconds secs negative = secs < 0 secs = secs.abs formatted = "%2s:%02d:%02d" % [secs/3600, (secs%3600)/60, secs%60] formatted = "-#{formatted}" if negative formatted end |
#format_time(time) ⇒ Object
61 62 63 64 |
# File 'lib/timetrap/helpers.rb', line 61 def format_time time return '' unless time.respond_to?(:strftime) time.strftime('%H:%M:%S') end |
#format_total(entries) ⇒ Object
89 90 91 92 93 94 |
# File 'lib/timetrap/helpers.rb', line 89 def format_total entries secs = entries.inject(0) do |m, e| m += e.duration end "%2s:%02d:%02d" % [secs/3600, (secs%3600)/60, secs%60] end |
#same_day?(time, other_time) ⇒ Boolean
76 77 78 |
# File 'lib/timetrap/helpers.rb', line 76 def same_day? time, other_time format_date(time) == format_date(other_time) end |
#selected_entries ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/timetrap/helpers.rb', line 41 def selected_entries ee = if (sheet = sheet_name_from_string(unused_args)) == 'all' Timetrap::Entry.where(Sequel.lit('sheet not like ? escape "!"', '!_%')) elsif (sheet = sheet_name_from_string(unused_args)) == 'full' Timetrap::Entry.where() elsif sheet =~ /.+/ Timetrap::Entry.where(sheet: sheet) else Timetrap::Entry.where(sheet: Timer.current_sheet) end ee = ee.filter(Sequel.lit('start >= ?', Date.parse(Timer.process_time(args['-s']).to_s))) if args['-s'] ee = ee.filter(Sequel.lit('start <= ?', Date.parse(Timer.process_time(args['-e']).to_s) + 1)) if args['-e'] ee = ee.order(:start) if args['-g'] re = Regexp::new(args['-g']) ee = ee.find_all{|e| re.match(e.note)} end ee end |
#sheet_name_from_string(string) ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/timetrap/helpers.rb', line 96 def sheet_name_from_string string string = string.strip case string when /^\W*all\W*$/ then "all" when /^\W*full\W*$/ then "full" when /^$/ then Timer.current_sheet else entry = DB[:entries].filter(Sequel.like(:sheet,string)).first || DB[:entries].filter(Sequel.like(:sheet, "#{string}%")).first if entry entry[:sheet] else raise "Can't find sheet matching #{string.inspect}" end end end |