class Ptimelog::Timelog
Load and tokenize the data from gtimelog
Public Class Methods
load()
click to toggle source
# File lib/ptimelog/timelog.rb, line 11 def load instance.load end
previous_entry()
click to toggle source
# File lib/ptimelog/timelog.rb, line 19 def previous_entry lines = timelog_txt.readlines.last(2) last_line = lines.map(&:chomp).delete_if(&:empty?).last last_entry = instance.tokenize(last_line) Entry.from_timelog(last_entry) end
timelog_txt()
click to toggle source
# File lib/ptimelog/timelog.rb, line 15 def timelog_txt Pathname.new(Configuration.instance[:timelog]).expand_path end
Public Instance Methods
load()
click to toggle source
# File lib/ptimelog/timelog.rb, line 28 def load @load ||= parse(read) end
parse(data)
click to toggle source
# File lib/ptimelog/timelog.rb, line 44 def parse(data) data.split("\n") .map { |line| tokenize(line) } .group_by { |match| match && match[:date] } .to_a end
previous_entry()
click to toggle source
# File lib/ptimelog/timelog.rb, line 36 def previous_entry self.class.previous_entry end
read()
click to toggle source
# File lib/ptimelog/timelog.rb, line 40 def read timelog_txt.read end
timelog_txt()
click to toggle source
# File lib/ptimelog/timelog.rb, line 32 def timelog_txt self.class.timelog_txt end
tokenize(line)
click to toggle source
# File lib/ptimelog/timelog.rb, line 51 def tokenize(line) re_date = /(?<date>\d{4}-\d{2}-\d{2})/ re_time = /(?<time>\d{2}:\d{2})/ re_tick = /(?:(?<ticket>.*?): )/ re_desc = /(?<description>.*?)/ re_tags = /(?: -- (?<tags>.*)?)/ regexp = /^#{re_date} #{re_time}: #{re_tick}?#{re_desc}#{re_tags}?$/ line.match(regexp) end