Class: Printer
- Inherits:
-
Object
- Object
- Printer
- Defined in:
- worklog/printer.rb
Overview
Printer for work log entries
Instance Attribute Summary collapse
-
#people ⇒ Object
readonly
Returns the value of attribute people.
Instance Method Summary collapse
-
#initialize(people = nil) ⇒ Printer
constructor
A new instance of Printer.
-
#no_entries(start_date, end_date) ⇒ void
Print a message when no entries are found.
-
#print_day(daily_log, date_inline = false, epics_only = false) ⇒ Object
Prints a whole day of work log entries.
-
#print_entry(daily_log, entry, date_inline = false) ⇒ Object
Prints a single entry, formats the date and time.
Constructor Details
#initialize(people = nil) ⇒ Printer
Returns a new instance of Printer.
9 10 11 |
# File 'worklog/printer.rb', line 9 def initialize(people = nil) @people = (people || []).to_h { |person| [person.handle, person] } end |
Instance Attribute Details
#people ⇒ Object (readonly)
Returns the value of attribute people.
7 8 9 |
# File 'worklog/printer.rb', line 7 def people @people end |
Instance Method Details
#no_entries(start_date, end_date) ⇒ void
This method returns an undefined value.
Print a message when no entries are found.
33 34 35 36 37 38 39 40 41 42 |
# File 'worklog/printer.rb', line 33 def no_entries(start_date, end_date) if start_date == end_date date_string = start_date.strftime('%a, %B %-d, %Y') puts "No entries found for #{Rainbow(date_string).gold}." else start_date_string = start_date.strftime('%a, %B %-d, %Y') end_date_string = end_date.strftime('%a, %B %-d, %Y') puts "No entries found between #{Rainbow(start_date_string).gold} and #{Rainbow(end_date_string).gold}." end end |
#print_day(daily_log, date_inline = false, epics_only = false) ⇒ Object
Prints a whole day of work log entries. If date_inline is true, the date is printed inline with the time. If epics_only is true, only epic entries are printed.
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'worklog/printer.rb', line 16 def print_day(daily_log, date_inline = false, epics_only = false) daily_log.date = Date.strptime(daily_log.date, '%Y-%m-%d') unless daily_log.date.respond_to?(:strftime) date_string = daily_log.date.strftime('%a, %B %-d, %Y') puts "Work log for #{Rainbow(date_string).gold}" unless date_inline daily_log.entries.each do |entry| next if epics_only && !entry.epic? print_entry(daily_log, entry, date_inline) end end |
#print_entry(daily_log, entry, date_inline = false) ⇒ Object
Prints a single entry, formats the date and time.
48 49 50 51 52 53 54 55 56 57 58 |
# File 'worklog/printer.rb', line 48 def print_entry(daily_log, entry, date_inline = false) entry.time = DateTime.strptime(entry.time, '%H:%M:%S') unless entry.time.respond_to?(:strftime) time_string = if date_inline "#{daily_log.date.strftime('%a, %Y-%m-%d')} #{entry.time.strftime('%H:%M')}" else entry.time.strftime('%H:%M') end puts "#{Rainbow(time_string).gold} #{entry.(@people)}" end |