Module: Timetrap

Extended by:
Timetrap
Included in:
Timetrap
Defined in:
lib/timetrap.rb,
lib/timetrap/cli.rb,
lib/timetrap/models.rb,
lib/timetrap/helpers.rb,
lib/timetrap/formatters/csv.rb,
lib/timetrap/formatters/ical.rb,
lib/timetrap/formatters/text.rb

Defined Under Namespace

Modules: CLI, Formatters, Helpers Classes: AlreadyRunning, Entry, Meta

Instance Method Summary collapse

Instance Method Details

#active_entryObject



39
40
41
# File 'lib/timetrap.rb', line 39

def active_entry
  Entry.find(:sheet => Timetrap.current_sheet, :end => nil)
end

#current_sheetObject



24
25
26
27
28
29
# File 'lib/timetrap.rb', line 24

def current_sheet
  unless Meta.find(:key => 'current_sheet')
    Meta.create(:key => 'current_sheet', :value => 'default')
  end
  Meta.find(:key => 'current_sheet').value
end

#current_sheet=(sheet) ⇒ Object



18
19
20
21
22
# File 'lib/timetrap.rb', line 18

def current_sheet= sheet
  m = Meta.find_or_create(:key => 'current_sheet')
  m.value = sheet
  m.save
end

#entries(sheet = nil) ⇒ Object



31
32
33
# File 'lib/timetrap.rb', line 31

def entries sheet = nil
  Entry.filter(:sheet => sheet).order_by(:start)
end

#format(format_klass, entries) ⇒ Object



67
68
69
# File 'lib/timetrap.rb', line 67

def format format_klass, entries
  format_klass.new(entries).output
end

#kill_sheet(sheet) ⇒ Object



63
64
65
# File 'lib/timetrap.rb', line 63

def kill_sheet sheet
  Entry.filter(:sheet => sheet).destroy
end

#running?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/timetrap.rb', line 35

def running?
  !!active_entry
end

#start(note, time = nil) ⇒ Object



51
52
53
54
55
56
57
# File 'lib/timetrap.rb', line 51

def start note, time = nil
  raise AlreadyRunning if running?
  time ||= Time.now
  Entry.create(:sheet => Timetrap.current_sheet, :note => note, :start => time).save
rescue => e
  CLI.say e.message
end

#stop(time = nil) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/timetrap.rb', line 43

def stop time = nil
  while a = active_entry
    time ||= Time.now
    a.end = time
    a.save
  end
end

#switch(sheet) ⇒ Object



59
60
61
# File 'lib/timetrap.rb', line 59

def switch sheet
  self.current_sheet = sheet
end