Pratt 1.6.8-x86-linux

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.
Files changed (72) hide show
  1. data/.exrc +61 -0
  2. data/.gitignore +6 -0
  3. data/History.txt +6 -0
  4. data/Manifest.txt +46 -0
  5. data/Pratt.gemspec +173 -0
  6. data/Pratt.mm +1867 -0
  7. data/README.txt +67 -0
  8. data/Rakefile +96 -0
  9. data/TODO +56 -0
  10. data/VERSION +1 -0
  11. data/bin/pratt +13 -0
  12. data/config.rb +19 -0
  13. data/db/sqlite_databases_go_here +0 -0
  14. data/db/zips.csv.zip +0 -0
  15. data/lib/models.rb +8 -0
  16. data/lib/pratt.rb +308 -0
  17. data/lib/pratt/core_ext.rb +6 -0
  18. data/lib/pratt/core_ext/array.rb +20 -0
  19. data/lib/pratt/core_ext/float.rb +29 -0
  20. data/lib/pratt/core_ext/nil.rb +5 -0
  21. data/lib/pratt/core_ext/numeric.rb +9 -0
  22. data/lib/pratt/core_ext/string.rb +31 -0
  23. data/lib/pratt/core_ext/time.rb +20 -0
  24. data/lib/pratt/dialogs.rb +81 -0
  25. data/lib/pratt/formatting.rb +19 -0
  26. data/lib/pratt/project_actions.rb +25 -0
  27. data/lib/pratt/reports.rb +140 -0
  28. data/models/app.rb +39 -0
  29. data/models/customer.rb +50 -0
  30. data/models/invoice.rb +28 -0
  31. data/models/invoice_whence.rb +18 -0
  32. data/models/payment.rb +22 -0
  33. data/models/pratt.rb +15 -0
  34. data/models/project.rb +89 -0
  35. data/models/whence.rb +77 -0
  36. data/models/zip.rb +27 -0
  37. data/pratt.mm +1875 -0
  38. data/spec/app_spec.rb +48 -0
  39. data/spec/array_spec.rb +24 -0
  40. data/spec/customer_spec.rb +31 -0
  41. data/spec/fixtures/empty_graph.expectation +8 -0
  42. data/spec/fixtures/graph.expectation +13 -0
  43. data/spec/fixtures/proportions.expectation +4 -0
  44. data/spec/float_spec.rb +24 -0
  45. data/spec/formatting_spec.rb +7 -0
  46. data/spec/money_spec.rb +9 -0
  47. data/spec/nil_class_spec.rb +8 -0
  48. data/spec/numeric_spec.rb +30 -0
  49. data/spec/payment_spec.rb +19 -0
  50. data/spec/pratt_spec.rb +106 -0
  51. data/spec/project_spec.rb +182 -0
  52. data/spec/rcov.opts +0 -0
  53. data/spec/report_action_spec.rb +83 -0
  54. data/spec/report_spec.rb +205 -0
  55. data/spec/seed_data.rb +33 -0
  56. data/spec/spec.opts +1 -0
  57. data/spec/spec_helper.rb +24 -0
  58. data/spec/string_ext_spec.rb +33 -0
  59. data/spec/whence_spec.rb +54 -0
  60. data/tasks/pratt.rb +87 -0
  61. data/templates/model.eruby +12 -0
  62. data/templates/spec.eruby +8 -0
  63. data/views/current.eruby +5 -0
  64. data/views/general-invoice.eruby +538 -0
  65. data/views/graph.eruby +16 -0
  66. data/views/invoice.eruby +148 -0
  67. data/views/main.rb +90 -0
  68. data/views/pid.eruby +3 -0
  69. data/views/pop.rb +78 -0
  70. data/views/proportions.eruby +4 -0
  71. data/views/raw.eruby +11 -0
  72. metadata +275 -0
@@ -0,0 +1,16 @@
1
+ Project detail
2
+ <% if scale %>
3
+ by <%= scale.red %> from
4
+ <%= when_to.send("beginning_of_#{scale}").strftime(Pratt::FMT).blue %> to <%= when_to.send("end_of_#{scale}").strftime(Pratt::FMT).blue %>
5
+ <% end %>
6
+ <%= ' '.with_label('') << 'dys'.underline << ' '*5 << 'hrs'.underline << ' '*5 << 'min'.underline << ' '*3 << 'total'.underline %>
7
+ <%= ( '-'.or '·')*67 %>
8
+
9
+ <% @projects.each do |proj| %>
10
+ <% hour_spent = proj.time_spent(scale, when_to) %>
11
+ <% if show_all or ( !show_all and hour_spent != 0.0 ) %>
12
+ <%= ('|'.or '⋮').with_label(proj.name) %> <%= (hour_spent / 24).format_integer.cyan %> day <%= (hour_spent % 24).format_integer.yellow %> hour <%= (60*(hour_spent - hour_spent.to_i)).format_integer.green %> min <%= hour_spent.pretty_print.blue %>
13
+ <% end %>
14
+ <% end %>
15
+
16
+ <%= ( '-'.or '·' )*67 %>
@@ -0,0 +1,148 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2
+ <HTML>
3
+ <HEAD>
4
+ <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
5
+ <TITLE></TITLE>
6
+ <META NAME="GENERATOR" CONTENT="OpenOffice.org 3.0 (Linux)">
7
+ <META NAME="AUTHOR" CONTENT=" ">
8
+ <META NAME="CREATED" CONTENT="20090930;9550000">
9
+ <META NAME="CHANGED" CONTENT="20091001;21332000">
10
+ <META NAME="Info 2" CONTENT="">
11
+ <META NAME="Info 3" CONTENT="">
12
+ <META NAME="Info 4" CONTENT="">
13
+ <META NAME="_TemplateID" CONTENT="TC100726791033">
14
+ <STYLE TYPE="text/css">
15
+ <!--
16
+ @page { margin-left: 0.5in; margin-right: 0.5in; margin-top: 0.5in; margin-bottom: 0.51in }
17
+ P { margin-bottom: 0.08in; direction: ltr; color: #000000; text-align: left; widows: 2; orphans: 2 }
18
+ P.western { font-family: "Calibri", sans-serif; font-size: 12pt; so-language: en-US }
19
+ P.cjk { font-family: "Times New Roman", serif; font-size: 12pt; so-language: zxx }
20
+ P.ctl { font-family: "Calibri", sans-serif; font-size: 12pt; so-language: ar-SA }
21
+ -->
22
+ </STYLE>
23
+ </HEAD>
24
+ <BODY LANG="en-US" TEXT="#000000" DIR="LTR">
25
+ <CENTER>
26
+ <TABLE WIDTH=720 BORDER=0 CELLPADDING=5 CELLSPACING=0 STYLE="page-break-before: always">
27
+ <COL WIDTH=351>
28
+ <COL WIDTH=349>
29
+ <TR VALIGN=TOP>
30
+ <TD ROWSPAN=2 WIDTH=351 HEIGHT=43>
31
+ <P STYLE="margin-top: 0.1in; margin-bottom: 0in"><B>QualitySmith LLC</B></P>
32
+ <P STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">106 N 2<SUP>nd</SUP> </FONT> </P>
33
+ <P STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Walla Walla, WA 99362</FONT></P>
34
+ <P STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Phone 509-522-0222</FONT></P>
35
+ <P><FONT SIZE=2 STYLE="font-size: 9pt">Fax </FONT> </P>
36
+ </TD>
37
+ <TD WIDTH=349>
38
+ <P ALIGN=RIGHT><FONT COLOR="#7f7f7f"><FONT SIZE=5 STYLE="font-size: 20pt"><B>INVOICE</B></FONT></FONT></P>
39
+ </TD>
40
+ </TR>
41
+ <TR>
42
+ <TD WIDTH=349 VALIGN=BOTTOM>
43
+ <P ALIGN=RIGHT><FONT SIZE=1 STYLE="font-size: 8pt">Date: <%= when_to.send("beginning_of_#{scale}").strftime(Pratt::INVOICE_FMT) %> to <%= when_to.send("end_of_#{scale}").strftime(Pratt::INVOICE_FMT) %></FONT></P>
44
+ </TD>
45
+ </TR>
46
+ </TABLE>
47
+ </CENTER>
48
+ <P CLASS="western" STYLE="margin-bottom: 0in"><BR>
49
+ </P>
50
+ <CENTER>
51
+ <TABLE WIDTH=720 BORDER=0 CELLPADDING=5 CELLSPACING=0>
52
+ <COL WIDTH=350>
53
+ <COL WIDTH=350>
54
+ <TR VALIGN=TOP>
55
+ <TD WIDTH=350 HEIGHT=86>
56
+ <P STYLE="margin-bottom: 0in"><FONT SIZE=1 STYLE="font-size: 8pt"><B>To:</B></FONT></P>
57
+ <P STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Scott Noel-Hemming</FONT></P>
58
+ <P STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Frogstarr78 Software</FONT></P>
59
+ <P STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">312 NW 7<SUP>th</SUP> </FONT> </P>
60
+ <P STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Milton-Freewater, OR, 97862</FONT></P>
61
+ <P><FONT SIZE=2 STYLE="font-size: 9pt">509.200.9190</FONT></P>
62
+ </TD>
63
+ <TD WIDTH=350>
64
+ <P><BR>
65
+ </P>
66
+ </TD>
67
+ </TR>
68
+ </TABLE>
69
+ </CENTER>
70
+ <P CLASS="western" STYLE="margin-bottom: 0in"><BR>
71
+ </P>
72
+ <CENTER>
73
+ <TABLE WIDTH=722 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=3 CELLSPACING=0 RULES=ROWS>
74
+ <COLGROUP>
75
+ <COL WIDTH=408>
76
+ <COL WIDTH=96>
77
+ </COLGROUP>
78
+ <COLGROUP>
79
+ <COL WIDTH=96>
80
+ </COLGROUP>
81
+ <COLGROUP>
82
+ <COL WIDTH=97>
83
+ </COLGROUP>
84
+ <TR>
85
+ <TD WIDTH=408 HEIGHT=12>
86
+ <P ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt"><B>DESCRIPTION</B></FONT></P>
87
+ </TD>
88
+ <TD WIDTH=96>
89
+ <P ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt"><B>HOURS</B></FONT></P>
90
+ </TD>
91
+ <TD WIDTH=96>
92
+ <P ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt"><B>RATE</B></FONT></P>
93
+ </TD>
94
+ <TD WIDTH=97>
95
+ <P ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt"><B>AMOUNT</B></FONT></P>
96
+ </TD>
97
+ </TR>
98
+ <% @projects.each do |project| %>
99
+ <TR>
100
+ <TD WIDTH=408 HEIGHT=13>
101
+ <P><%= project.name %></P>
102
+ </TD>
103
+ <TD WIDTH=96>
104
+ <P ALIGN=RIGHT><%= project.time_spent(scale, when_to).pretty_print %></P>
105
+ </TD>
106
+ <TD WIDTH=96>
107
+ <P ALIGN=RIGHT><%= project.payment.pretty_print %></P>
108
+ </TD>
109
+ <TD WIDTH=97>
110
+ <P ALIGN=RIGHT><FONT SIZE=2><%= project.amount( project.time_spent( scale, when_to ) ).pretty_print %></FONT></P>
111
+ </TD>
112
+ </TR>
113
+ <% end %>
114
+ <TR>
115
+ <TD WIDTH=408 HEIGHT=13 VALIGN=TOP>
116
+ <P CLASS="western"><BR>
117
+ </P>
118
+ </TD>
119
+ <TD COLSPAN=2 WIDTH=198>
120
+ <P ALIGN=RIGHT><FONT SIZE=1 STYLE="font-size: 8pt">TOTAL</FONT></P>
121
+ </TD>
122
+ <TD WIDTH=97>
123
+ <P ALIGN=RIGHT><FONT SIZE=2><%= @total.pretty_print %></FONT></P>
124
+ </TD>
125
+ </TR>
126
+ </TABLE>
127
+ </CENTER>
128
+ <P CLASS="western" STYLE="margin-bottom: 0in"><BR>
129
+ </P>
130
+ <CENTER>
131
+ <TABLE WIDTH=720 BORDER=0 CELLPADDING=8 CELLSPACING=0>
132
+ <COL WIDTH=704>
133
+ <TR>
134
+ <TD WIDTH=704 HEIGHT=90 VALIGN=TOP>
135
+ <P><FONT SIZE=2 STYLE="font-size: 9pt">Make all checks payable to Frogstarr78 Software</FONT></P>
136
+ </TD>
137
+ </TR>
138
+ <TR>
139
+ <TD WIDTH=704 HEIGHT=13>
140
+ <P ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt"><B>Thank you for your business!</B></FONT></P>
141
+ </TD>
142
+ </TR>
143
+ </TABLE>
144
+ </CENTER>
145
+ <P CLASS="western" STYLE="margin-bottom: 0in"><BR>
146
+ </P>
147
+ </BODY>
148
+ </HTML>
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/env ruby
2
+ require 'tk'
3
+ require 'tkextlib/tile'
4
+ require 'optparse'
5
+ require 'ostruct'
6
+
7
+ include Tk::Tile
8
+
9
+ opts = OpenStruct.new
10
+ opts.projects = []
11
+ opts.current = -1
12
+
13
+ ARGV.options do |opt|
14
+ opt.on('-p x,y,z', "--projects x,y,z", Array, "List of projects to display.") do |projs|
15
+ opts.projects = projs
16
+ end
17
+ opt.on('-c', '--current CURRENT', String, "Set the current task.") do |cur|
18
+ opts.current = opts.projects.index(cur)
19
+ end
20
+ opt.parse!
21
+ end
22
+
23
+ if opts.projects.empty?
24
+ raise 'No Projects' if ARGV.empty?
25
+ opts.projects = ARGV.split(',')
26
+ end
27
+
28
+ opts.current = opts.projects.index(opts.current) if opts.current == -1
29
+
30
+ root = TkRoot.new { title "Pratt Main" }
31
+
32
+ button_holder = Frame.new(root){ padding "5 5 5 5" }
33
+ button_holder_top = Frame.new(button_holder) { padding "5 5 5 5" }
34
+
35
+ project_combo = TCombobox.new(button_holder_top)
36
+ project_combo.values = opts.projects
37
+ project_combo.current = opts.current || 0
38
+ project_combo.pack('side' => 'bottom', 'fill' => 'y')
39
+
40
+ change = proc {
41
+ Process.detach(
42
+ fork { system("ruby bin/pratt --project '#{project_combo.get}' --change --begin --unlock") }
43
+ )
44
+ exit
45
+ }
46
+ quit = proc {
47
+ Process.detach(
48
+ fork { system("ruby bin/pratt --project '#{project_combo.get}' --end --unlock --quit") }
49
+ )
50
+ exit
51
+ }
52
+ start = proc {
53
+ Process.detach(
54
+ fork { system("ruby bin/pratt --project '#{project_combo.get}' --begin --unlock") }
55
+ )
56
+ exit
57
+ }
58
+
59
+ Label.new(button_holder_top) { text "What will you be working on?" }.pack('side' => 'top', :fill => 'y')
60
+
61
+ button_holder_bottom = Frame.new(button_holder) { padding "5 5 5 5" }
62
+ TkButton.new(button_holder_bottom) do
63
+ text 'Start'
64
+ command start
65
+ underline 0
66
+ end.pack :side => 'left', :fill => 'y'
67
+ root.bind("Alt-s", start)
68
+ #root.bind("Return", start)
69
+
70
+ TkButton.new(button_holder_bottom) do
71
+ text 'Change'
72
+ command change
73
+ underline 0
74
+ end.pack :side => 'left', :fill => 'y'
75
+ root.bind("Alt-c", change)
76
+
77
+ TkButton.new(button_holder_bottom) do
78
+ text 'Quit'
79
+ command quit
80
+ underline 0
81
+ end.pack :side => 'right', :fill => 'y'
82
+ root.bind("Alt-q", quit)
83
+ root.bind("Control-q", quit)
84
+ root.bind("Destroy", quit)
85
+
86
+ button_holder_top.pack( :side => 'top' , :fill => 'y')
87
+ button_holder_bottom.pack(:side => 'bottom', :fill => 'y')
88
+ button_holder.pack( :side => 'top', :fill => 'y')
89
+
90
+ Tk.mainloop
@@ -0,0 +1,3 @@
1
+ pid <%= cpid.cyan %> found running
2
+ expect <%= app.pid.to_s.magenta %> <%= ('-'.or '·')*20 %> <%= '|'.or '⌈' %><%= daemonized? ? 'OK'.green : 'Oops'.red %><%= '|'.or '⌋' %>
3
+
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env ruby
2
+ require 'tk'
3
+ require 'tkextlib/tile'
4
+ require 'optparse'
5
+ require 'ostruct'
6
+
7
+ include Tk::Tile
8
+
9
+ opts = OpenStruct.new
10
+ opts.project_name = ''
11
+ opts.start_time = ''
12
+ opts.project_time = ''
13
+
14
+ ARGV.options do |opt|
15
+ opt.on('-p', '--project PROJECT', String, "Set the current task.") do |proj|
16
+ opts.project_name = proj
17
+ end
18
+ opt.on('-s', '--start START_TIME', String, "Set the current task.") do |time|
19
+ opts.start_time = time
20
+ end
21
+ opt.on('-t', '--project_time PROJECT_TIME', String, "Set the current task.") do |time|
22
+ opts.project_time = time
23
+ end
24
+ opt.parse!
25
+ end
26
+
27
+ yes = proc {
28
+ c = fork { system("ruby bin/pratt --project '#{opts.project_name}' --restart --unlock") }
29
+ Process.detach(c)
30
+ exit
31
+ }
32
+ adjust = proc {
33
+ c = fork { system("ruby bin/pratt --project '#{opts.project_name}' --end --unlock --gui") }
34
+ Process.detach(c)
35
+ exit
36
+ }
37
+
38
+ root = TkRoot.new { title "Pratt Reminder" }
39
+
40
+ frm = Frame.new(root) { padding "5 5 5 5" }
41
+ top_frm = Frame.new(frm) { padding "5 5 5 5" }
42
+
43
+ Label.new(top_frm) do
44
+ text "Have you been working on: "
45
+ end.pack(:side => 'top', :fill => 'y')
46
+
47
+ Label.new(top_frm) do
48
+ text opts.project_name
49
+ end.pack(:side => 'top', :fill => 'y')
50
+
51
+ Label.new(top_frm) do
52
+ text "started:
53
+ #{opts.start_time}
54
+ total time:
55
+ #{opts.project_time.gsub(/\e\[[0-9]+m/, '')}."
56
+ end.pack(:side => 'bottom', :fill => 'y')
57
+
58
+ botm_frm = Frame.new(frm) { padding "5 5 5 5" }
59
+ TkButton.new(botm_frm) do
60
+ text "Yes"
61
+ command yes
62
+ underline 0
63
+ end.pack('side' => 'left', :fill => 'y')
64
+ root.bind("Alt-y", yes)
65
+ #root.bind("Return", yes)
66
+
67
+ TkButton.new(botm_frm) do
68
+ text "Adjust"
69
+ command adjust
70
+ underline 0
71
+ end.pack('side' => 'right', :fill => 'y')
72
+ root.bind("Alt-a", adjust)
73
+
74
+ top_frm.pack( :side => 'top', :fill => 'y')
75
+ botm_frm.pack(:side => 'bottom', :fill => 'y')
76
+ frm.pack( :side => 'top', :fill => 'y')
77
+
78
+ Tk.mainloop
@@ -0,0 +1,4 @@
1
+ <%= @scaled_total.to_f.pretty_print.underline.with_label("Total") %> hrs
2
+ <%= @primary.to_f.percentage( @scaled_total ).green.with_label(Project.primary.name) %>
3
+ <%= @off_total.to_f.percentage( @scaled_total).yellow.with_label(Project.off.name) %>
4
+ <%= @rest_total.to_f.percentage( @scaled_total ).red.with_label('Other') %>
@@ -0,0 +1,11 @@
1
+ <% colors = %w(red red_on_yellow red_on_white green green_on_blue yellow yellow_on_blue blue magenta magenta_on_blue cyan white white_on_green white_on_blue white_on_magenta black_on_yellow black_on_blue black_on_green black_on_magenta black_on_cyan black_on_red).sort
2
+ @whences.each do |whence|
3
+ color = colors[whence.project.id%colors.size]
4
+ %>
5
+ <%= ('|'.or '⌈').with_label whence.project.name %><%= whence.start_at.strftime(Pratt::FMT).send(color) -%>
6
+ <% if whence.end_at -%>
7
+ <%= '-'.or '­' %> <%= whence.end_at.strftime(Pratt::FMT).send(color) %><%= '|'.or '⌋' %> <%= "%6.2f"% [(whence.end_at-whence.start_at)/60] %> min
8
+ <% else %>
9
+ ...
10
+ <% end %>
11
+ <% end %>
metadata ADDED
@@ -0,0 +1,275 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: Pratt
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 6
8
+ - 8
9
+ version: 1.6.8
10
+ platform: x86-linux
11
+ authors:
12
+ - Scott Noel-Hemming
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-06-01 00:00:00 -07:00
18
+ default_executable: pratt
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rspec
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 2
30
+ - 6
31
+ version: 1.2.6
32
+ type: :development
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: mocha
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ - 9
44
+ - 5
45
+ version: 0.9.5
46
+ type: :development
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: activerecord
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 2
57
+ - 1
58
+ - 1
59
+ version: 2.1.1
60
+ type: :runtime
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: sqlite3-ruby
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "="
68
+ - !ruby/object:Gem::Version
69
+ segments:
70
+ - 1
71
+ - 2
72
+ - 4
73
+ version: 1.2.4
74
+ type: :runtime
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: shifty_week
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ segments:
84
+ - 0
85
+ - 1
86
+ - 0
87
+ version: 0.1.0
88
+ type: :runtime
89
+ version_requirements: *id005
90
+ - !ruby/object:Gem::Dependency
91
+ name: erubis
92
+ prerelease: false
93
+ requirement: &id006 !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "="
96
+ - !ruby/object:Gem::Version
97
+ segments:
98
+ - 2
99
+ - 6
100
+ - 5
101
+ version: 2.6.5
102
+ type: :runtime
103
+ version_requirements: *id006
104
+ - !ruby/object:Gem::Dependency
105
+ name: chronic
106
+ prerelease: false
107
+ requirement: &id007 !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "="
110
+ - !ruby/object:Gem::Version
111
+ segments:
112
+ - 0
113
+ - 2
114
+ - 3
115
+ version: 0.2.3
116
+ type: :runtime
117
+ version_requirements: *id007
118
+ - !ruby/object:Gem::Dependency
119
+ name: colored
120
+ prerelease: false
121
+ requirement: &id008 !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "="
124
+ - !ruby/object:Gem::Version
125
+ segments:
126
+ - 1
127
+ - 2
128
+ version: "1.2"
129
+ type: :runtime
130
+ version_requirements: *id008
131
+ description: "\n\
132
+ \t Need a way to keep track of your time, but get caught up in work? Or constant interruptions?\n\
133
+ \t Yeah you know who I'm talking about. Those people from the [abc] department always \"NEEDING xyz FEATURE NOW!!!\".\n\
134
+ \t Seriously though. I'm usually just loose track of time. I wanted an app that I could start with a task I think \n\
135
+ \t I'll be working on, but that get's in my face constantly to ensure I'm still working on it. And if I'm not any longer,\n\
136
+ \t provides an easy way of changing to another task, or if I have changed tasks and not already updated the app, would \n\
137
+ \t provide an easy way of changing the task of the previously recorded interval. That's what this is intended to do.\n\n\
138
+ \t Time Tracking.\n\
139
+ \t Proactively set what you expect to work on.\n\
140
+ \t Reactively modify what you are no longer working on.\n "
141
+ email: frogstarr78@gmail.com
142
+ executables:
143
+ - pratt
144
+ extensions: []
145
+
146
+ extra_rdoc_files:
147
+ - README.txt
148
+ - TODO
149
+ files:
150
+ - .exrc
151
+ - .gitignore
152
+ - History.txt
153
+ - Manifest.txt
154
+ - Pratt.gemspec
155
+ - Pratt.mm
156
+ - README.txt
157
+ - Rakefile
158
+ - TODO
159
+ - VERSION
160
+ - bin/pratt
161
+ - config.rb
162
+ - db/sqlite_databases_go_here
163
+ - db/zips.csv.zip
164
+ - lib/models.rb
165
+ - lib/pratt.rb
166
+ - lib/pratt/core_ext.rb
167
+ - lib/pratt/core_ext/array.rb
168
+ - lib/pratt/core_ext/float.rb
169
+ - lib/pratt/core_ext/nil.rb
170
+ - lib/pratt/core_ext/numeric.rb
171
+ - lib/pratt/core_ext/string.rb
172
+ - lib/pratt/core_ext/time.rb
173
+ - lib/pratt/dialogs.rb
174
+ - lib/pratt/formatting.rb
175
+ - lib/pratt/project_actions.rb
176
+ - lib/pratt/reports.rb
177
+ - models/app.rb
178
+ - models/customer.rb
179
+ - models/invoice.rb
180
+ - models/invoice_whence.rb
181
+ - models/payment.rb
182
+ - models/pratt.rb
183
+ - models/project.rb
184
+ - models/whence.rb
185
+ - models/zip.rb
186
+ - pratt.mm
187
+ - reports/travel.log
188
+ - reports/travel.log.2009
189
+ - spec/app_spec.rb
190
+ - spec/array_spec.rb
191
+ - spec/customer_spec.rb
192
+ - spec/fixtures/empty_graph.expectation
193
+ - spec/fixtures/graph.expectation
194
+ - spec/fixtures/proportions.expectation
195
+ - spec/float_spec.rb
196
+ - spec/formatting_spec.rb
197
+ - spec/money_spec.rb
198
+ - spec/nil_class_spec.rb
199
+ - spec/numeric_spec.rb
200
+ - spec/payment_spec.rb
201
+ - spec/pratt_spec.rb
202
+ - spec/project_spec.rb
203
+ - spec/rcov.opts
204
+ - spec/report_action_spec.rb
205
+ - spec/report_spec.rb
206
+ - spec/seed_data.rb
207
+ - spec/spec.opts
208
+ - spec/spec_helper.rb
209
+ - spec/string_ext_spec.rb
210
+ - spec/whence_spec.rb
211
+ - tasks/pratt.rb
212
+ - templates/model.eruby
213
+ - templates/spec.eruby
214
+ - views/current.eruby
215
+ - views/general-invoice.eruby
216
+ - views/graph.eruby
217
+ - views/invoice.eruby
218
+ - views/main.rb
219
+ - views/pid.eruby
220
+ - views/pop.rb
221
+ - views/proportions.eruby
222
+ - views/raw.eruby
223
+ has_rdoc: true
224
+ homepage: http://github.com/frogstarr78/pratt
225
+ licenses: []
226
+
227
+ post_install_message:
228
+ rdoc_options:
229
+ - --charset=UTF-8
230
+ require_paths:
231
+ - lib
232
+ required_ruby_version: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ segments:
237
+ - 0
238
+ version: "0"
239
+ required_rubygems_version: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ segments:
244
+ - 0
245
+ version: "0"
246
+ requirements: []
247
+
248
+ rubyforge_project: Pratt
249
+ rubygems_version: 1.3.6
250
+ signing_key:
251
+ specification_version: 3
252
+ summary: Pro/Re-Active Time Tracker. Track time based on what you expect to be working on, with frequent prompts to ensure accuracy.
253
+ test_files:
254
+ - spec/nil_class_spec.rb
255
+ - spec/whence_spec.rb
256
+ - spec/array_spec.rb
257
+ - spec/spec_helper.rb
258
+ - spec/float_spec.rb
259
+ - spec/pratt_spec.rb
260
+ - spec/seed_data.rb
261
+ - spec/project_spec.rb
262
+ - spec/numeric_spec.rb
263
+ - spec/app_spec.rb
264
+ - spec/formatting_spec.rb
265
+ - spec/string_ext_spec.rb
266
+ - spec/customer_spec.rb
267
+ - spec/report_spec.rb
268
+ - spec/money_spec.rb
269
+ - spec/report_action_spec.rb
270
+ - spec/payment_spec.rb
271
+ - spec/rcov.opts
272
+ - spec/spec.opts
273
+ - spec/fixtures/empty_graph.expectation
274
+ - spec/fixtures/proportions.expectation
275
+ - spec/fixtures/graph.expectation