class Ptimelog::Command::Add
add a new entrie with the current date and time
Public Class Methods
new(task)
click to toggle source
Calls superclass method
# File lib/ptimelog/command/add.rb, line 9 def initialize(task) super() @task = task @timelog = Ptimelog::Timelog.instance @new_lines = [] end
Public Instance Methods
needs_entries?()
click to toggle source
# File lib/ptimelog/command/add.rb, line 17 def needs_entries? false end
run()
click to toggle source
# File lib/ptimelog/command/add.rb, line 21 def run add_empty_line if @timelog.previous_entry.date == yesterday add_entry(*parse_task(@task)) save_file end
Private Instance Methods
add_empty_line()
click to toggle source
# File lib/ptimelog/command/add.rb, line 48 def add_empty_line @new_lines << '' end
add_entry(date_time, task)
click to toggle source
# File lib/ptimelog/command/add.rb, line 44 def add_entry(date_time, task) @new_lines << "#{date_time}: #{task}" end
parse_task(line)
click to toggle source
# File lib/ptimelog/command/add.rb, line 30 def parse_task(line) matches = line.match('(?<time>\d{1,2}:\d{2} )?(?<offset>[+-]\d+ )?(?<task>.*)') formatted_time = if matches[:time] Time.parse(matches[:time]) else Time.now end .localtime .then { |time| time + (matches[:offset].to_i * 60) } .strftime('%F %R') [formatted_time, matches[:task]] end
save_file()
click to toggle source
# File lib/ptimelog/command/add.rb, line 52 def save_file @timelog.timelog_txt.open('a') do |log| @new_lines.each do |line| log << "#{line}\n" end end end
yesterday()
click to toggle source
# File lib/ptimelog/command/add.rb, line 60 def yesterday NamedDate.new.named_date('yesterday') end