tictoc 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ Gemfile.lock
2
+ pkg/
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source :rubygems
2
+
3
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+
4
+ task :default do
5
+ load 'bin/tictoc'
6
+ end
data/bin/tictoc ADDED
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift(File.join(File.dirname(__FILE__), "/../lib"))
4
+ require 'tictoc'
5
+
6
+ require 'active_support/core_ext'
7
+ require 'appscript'
8
+ require 'ostruct'
9
+
10
+ class ModelBase < OpenStruct
11
+ def <=>(other)
12
+ self.sort_key <=> other.sort_key
13
+ end
14
+ end
15
+
16
+ class Task < ModelBase
17
+ end
18
+
19
+ class Session < ModelBase
20
+ def sort_key
21
+ [self.date, self.task.name.downcase]
22
+ end
23
+
24
+ def date
25
+ start_date.to_date
26
+ end
27
+ end
28
+
29
+ sessions = []
30
+ app = Appscript.app('Tictoc')
31
+ app.tasks.properties_.get.each do |task_data|
32
+ task_ref = app.tasks.ID(task_data[:id_])
33
+ task = Task.new(task_data)
34
+ task_ref.sessions.properties_.get.each do |session_data|
35
+ session = Session.new(session_data.merge(:task => task))
36
+ sessions << session
37
+ end
38
+ end
39
+
40
+ footer_text = "Total:"
41
+ max_name_len = footer_text.size
42
+
43
+ days = {}
44
+ sessions.sort.each do |session|
45
+ day = days[session.date] ||= Hash.new(0)
46
+ day[session.task.name] += session.duration / 3600.0
47
+ max_name_len = [max_name_len, session.task.name.size].max
48
+ end
49
+
50
+ def format_hours(hours)
51
+ "#{hours.floor.to_s.rjust 2}:#{(hours*60%60).round(0).to_s.rjust(2,'0')} (#{hours.round(2)} hours)"
52
+ end
53
+
54
+ days.each do |date,tasks|
55
+ puts date.strftime '%Y-%m-%d %A'
56
+ tasks.each do |name, hours|
57
+ puts " #{name.ljust max_name_len} #{format_hours hours}"
58
+ end
59
+ puts " #{footer_text.rjust max_name_len} #{format_hours tasks.values.sum}"
60
+ puts
61
+ end
data/lib/tictoc.rb ADDED
@@ -0,0 +1 @@
1
+ require 'tictoc/version'
@@ -0,0 +1,3 @@
1
+ module Tictoc
2
+ VERSION = "0.0.1"
3
+ end
data/tictoc.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/tictoc/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ['Jason Weathered']
6
+ gem.email = ['jason@jasoncodes.com']
7
+ gem.summary = %q{Report Tictoc timesheet summary by day}
8
+ gem.homepage = 'https://github.com/jasoncodes/tictoc'
9
+
10
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
11
+ gem.files = `git ls-files`.split("\n")
12
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
13
+ gem.name = 'tictoc'
14
+ gem.require_paths = ['lib']
15
+ gem.version = Tictoc::VERSION
16
+
17
+ gem.add_dependency 'rb-appscript'
18
+ gem.add_dependency 'i18n'
19
+ gem.add_dependency 'activerecord', '~> 3.0'
20
+
21
+ gem.add_development_dependency 'rake'
22
+ gem.add_development_dependency 'gem-release'
23
+ end
metadata ADDED
@@ -0,0 +1,114 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tictoc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jason Weathered
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-12-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rb-appscript
16
+ requirement: &70232952930360 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70232952930360
25
+ - !ruby/object:Gem::Dependency
26
+ name: i18n
27
+ requirement: &70232952929740 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70232952929740
36
+ - !ruby/object:Gem::Dependency
37
+ name: activerecord
38
+ requirement: &70232952944620 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '3.0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70232952944620
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: &70232952942420 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70232952942420
58
+ - !ruby/object:Gem::Dependency
59
+ name: gem-release
60
+ requirement: &70232952938940 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70232952938940
69
+ description:
70
+ email:
71
+ - jason@jasoncodes.com
72
+ executables:
73
+ - tictoc
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - .gitignore
78
+ - Gemfile
79
+ - Rakefile
80
+ - bin/tictoc
81
+ - lib/tictoc.rb
82
+ - lib/tictoc/version.rb
83
+ - tictoc.gemspec
84
+ homepage: https://github.com/jasoncodes/tictoc
85
+ licenses: []
86
+ post_install_message:
87
+ rdoc_options: []
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ segments:
97
+ - 0
98
+ hash: -610537785577650725
99
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ! '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ segments:
106
+ - 0
107
+ hash: -610537785577650725
108
+ requirements: []
109
+ rubyforge_project:
110
+ rubygems_version: 1.8.11
111
+ signing_key:
112
+ specification_version: 3
113
+ summary: Report Tictoc timesheet summary by day
114
+ test_files: []