Module: Timetrap

Extended by:
Timetrap
Included in:
Timetrap
Defined in:
lib/timetrap.rb,
lib/timetrap/cli.rb,
lib/timetrap/config.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, Config, Formatters, Helpers Classes: AlreadyRunning, Entry, Meta

Instance Method Summary collapse

Instance Method Details

#active_entryObject



42
43
44
# File 'lib/timetrap.rb', line 42

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

#current_sheetObject



27
28
29
30
31
32
# File 'lib/timetrap.rb', line 27

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



21
22
23
24
25
# File 'lib/timetrap.rb', line 21

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

#entries(sheet = nil) ⇒ Object



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

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

#format(format_klass, entries) ⇒ Object



70
71
72
# File 'lib/timetrap.rb', line 70

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

#kill_sheet(sheet) ⇒ Object



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

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

#running?Boolean

Returns:

  • (Boolean)


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

def running?
  !!active_entry
end

#start(note, time = nil) ⇒ Object



54
55
56
57
58
59
60
# File 'lib/timetrap.rb', line 54

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



46
47
48
49
50
51
52
# File 'lib/timetrap.rb', line 46

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

#switch(sheet) ⇒ Object



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

def switch sheet
  self.current_sheet = sheet
end