Browse code
Split some classes out
Move several classes from timesheet.lisp to main-classes.lisp.
TODO: I probably should give main-classes.lisp its own package name
Showing 3 changed files
1 | 1 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,30 @@ |
1 |
+(in-package #:timesheet) |
|
2 |
+ |
|
3 |
+(defclass status-calculator () |
|
4 |
+ ((rate :initarg :rate :accessor rate) |
|
5 |
+ (total-hours :initform 0 :initarg :total-hour :accessor total-hours) |
|
6 |
+ (client-totals :initarg :client-totals :accessor client-totals))) |
|
7 |
+ |
|
8 |
+(defclass status-line () |
|
9 |
+ ((client :initarg :client :accessor client) |
|
10 |
+ (duration :initarg :duration :accessor duration :initform 0))) |
|
11 |
+ |
|
12 |
+(defclass parsed-entry () |
|
13 |
+ ((date :initarg :date :accessor date) |
|
14 |
+ (client :initarg :client :accessor client) |
|
15 |
+ (memo :initarg :memo :accessor memo))) |
|
16 |
+ |
|
17 |
+(defclass complete-entry (parsed-entry) |
|
18 |
+ ((duration :initarg :duration :accessor duration))) |
|
19 |
+ |
|
20 |
+(defclass partial-entry (parsed-entry) |
|
21 |
+ ((start-times :initarg :start-times :initform nil :accessor start-times))) |
|
22 |
+ |
|
23 |
+(define-condition incomplete-entry-warning (warning) ()) |
|
24 |
+ |
|
25 |
+(define-condition parsing-error () |
|
26 |
+ ((leftovers :initarg :leftovers :accessor leftovers)) |
|
27 |
+ (:report (lambda (condition stream) |
|
28 |
+ (format stream "Parse error: ~20s leftover" (leftovers condition))))) |
|
29 |
+ |
|
30 |
+ |
... | ... |
@@ -9,27 +9,6 @@ |
9 | 9 |
(defvar *default-time-sheet-file*) |
10 | 10 |
(defvar *rate*) |
11 | 11 |
|
12 |
-(defclass status-calculator () |
|
13 |
- ((rate :initarg :rate :accessor rate) |
|
14 |
- (total-hours :initform 0 :initarg :total-hour :accessor total-hours) |
|
15 |
- (client-totals :initarg :client-totals :accessor client-totals))) |
|
16 |
- |
|
17 |
-(defclass status-line () |
|
18 |
- ((client :initarg :client :accessor client) |
|
19 |
- (duration :initarg :duration :accessor duration :initform 0))) |
|
20 |
- |
|
21 |
-(defclass parsed-entry () |
|
22 |
- ((date :initarg :date :accessor date) |
|
23 |
- (client :initarg :client :accessor client) |
|
24 |
- (memo :initarg :memo :accessor memo))) |
|
25 |
- |
|
26 |
-(defclass complete-entry (parsed-entry) |
|
27 |
- ((duration :initarg :duration :accessor duration))) |
|
28 |
- |
|
29 |
-(defclass partial-entry (parsed-entry) |
|
30 |
- ((start-times :initarg :start-times :initform nil :accessor start-times))) |
|
31 |
- |
|
32 |
-(defcondition incomplete-entry-warning (warning) ()) |
|
33 | 12 |
(defmethod duration ((obj partial-entry)) |
34 | 13 |
(warn "incomplete entry detected for ~a" (client obj)) |
35 | 14 |
(local-time-duration:duration)) |
... | ... |
@@ -48,11 +27,6 @@ |
48 | 27 |
:memo memo |
49 | 28 |
:start-times start-times)) |
50 | 29 |
|
51 |
-(define-condition parsing-error () |
|
52 |
- ((leftovers :initarg :leftovers :accessor leftovers)) |
|
53 |
- (:report (lambda (condition stream) |
|
54 |
- (format stream "Parse error: ~20s leftover" (leftovers condition))))) |
|
55 |
- |
|
56 | 30 |
(defun parse-file (&optional (file *default-time-sheet-file*)) |
57 | 31 |
(with-open-file (s file :direction :input) |
58 | 32 |
(let ((dest (make-string (file-length s)))) |