git.fiddlerwoaroof.com
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

fiddlerwoaroof authored on 28/02/2016 03:39:44
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
+
... ...
@@ -28,6 +28,7 @@
28 28
                (:file "macros")
29 29
                (:file "parser")
30 30
                (:file "mvc")
31
+               (:file "main-classes")  
31 32
                (:file "timesheet")))
32 33
 
33 34
 
... ...
@@ -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))))